iOS Objective-C变量和属性总结

一、变量

这儿的变量主要讨论类中的成员变量,protected变量(或私有变量)在类的外面是不能直接访问的,可以通过KVC访问和赋值,public变量可以通过->访问,也可以提供对外访问的setter方法。

示例

@interface Worker : NSObject
{
    //默认protected
    NSString *_name;//姓名
    //公开
@public
    NSString *_job;//职业
}

@end

@implementation Worker

@end

//访问例子
    Worker *w = [Worker new];
    w->_job = @"job";
    
    [w setValue:@"a" forKey:@"_name"];
    NSLog(@"%@,%@",w->_job,[w valueForKey:@"_name"]);

输出: 2025-09-13 18:02:41.388821+0800 iOS_jilei[47450:2400775] job,a (lldb)

二、属性

属性是Objective-C 2.0引入的语法,主要用于生成setter/getter方法,简化变量的访问与内存管理。
特性

  • 属性会生成setter、getter、ivar,默认实现@synthesize xxx = _xxx;
  • 属性有多种修饰符,如readonly、readwrite、assign、retain、weak、unsafe_unretain、nonatomic等,默认是readwrite。readonly代表只读,retain代表生成的setter方法会把旧值release,新的值retain,weak代表弱引用,如果指向的对象释放了,变量会置空;unsafe_unretain类似weak,引用计数不会+1,不过对象释放后,assign和unsafe_unretain会指向野指针;assign主要用于基本数据类型,例如int、NSInteger等;
  • @synthesize是编译器指令,用于自动生成成员的setter和getter方法,如果没有写,编译器会自动为我们生成一个带下划线的变量,一般的写法是@synthesize xxx = _xxx,也可以写成@synthesize xxx,后者生成的变量就是xxx;
  • dynamic是告诉编译器不要生成setter/getter方法,需要用户生成;

三、总结

以上就是对iOS Objective-C中变量和属性的总结。

转载请说明出处内容投诉
CSS教程网 » iOS Objective-C变量和属性总结

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买