我正在阅读:http ://cocoacast.com/?q=node/103
我在上面的页面中遇到了这种方法:
-(void)foo
{
self->iVar = 5; //legal because we are referencing a member variable
iVar = r; // illegal because we are referencing a readonly property
}
然后我在 Xcode 中创建了一个项目。
测试0.h
#import <Foundation/Foundation.h>
@interface Test0 : NSObject
{
@private int iVar;
}
@property (readonly, assign) int iVar;
- (void) foo;
@end
测试0.m
#import "Test0.h"
@implementation Test0
@synthesize iVar;
- (void) foo
{
iVar = 5;
}
@end
主文件
#import <Foundation/Foundation.h>
#import "Test0.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Test0 *t1 = [[Test0 alloc] init];
[t1 foo];
NSLog(@"%d", t1.iVar);
}
return 0;
}
控制台中的结果是 5。
我的问题:
- 上面提到的网页使用self->iVar = 5 我用过iVar = 5
它有什么区别?
- 上面提到的网页说 iVar = r; // 非法,因为我们引用了一个只读属性
iVar = 5 (我使用过的)与 iVar = r 不同吗?怎么不违法?