aclass.h
@interface aClass : NSObject {
NSString *name;
}
@property (nonatomic, retain) IBOutlet NSString *name;
@end
Run Code Online (Sandbox Code Playgroud)
aclass.m
@implementation aClass
@synthesize name;
- (void)dealloc {
[name release];
[super dealloc];
}
- (void)test1 {
name = @"hello";
}
- (void)test2 {
self.name = @"hello";
}
Run Code Online (Sandbox Code Playgroud)
以上面为例.可能有人请解释之间的差异name = @"hello"和self.name = @"hello"?谢谢!
我是Objective C和iOS的新手,目前正在尝试使用iOS 6 SDK学习应用程序开发.我真的无法理解的一个概念是在.m文件中访问时"_variable"和"self.variable"之间的区别.它们是一样的吗?还是不同?
以下是一个简单的示例
MyClass.h
#import <Foundation/Foundation.h>
@interface MyClass : NSObject
@property (strong, nonatomic) NSString *myName;
@end
Run Code Online (Sandbox Code Playgroud)
MyClass.m
#import "MyClass.h"
@interface MyClass ()
@property (nonatomic, strong) NSString *anotherName;
@end
@implementation MyClass
- (void) myFunction {
_myName = @"Ares";
self.myName = @"Ares";
_anotherName = @"Michael";
self.anotherName = @"Michael";
}
@end
Run Code Online (Sandbox Code Playgroud)
那么上面的实现设置变量有什么不同吗?变量"myName"是Public,而"anotherName"是Private.
非常感谢任何投入.谢谢!
可能重复:
self.ivar和ivar之间的区别?
我想知道,如果我在Obj-C中将实例变量定义为属性,例如,
@property (copy) NSString *str;
Run Code Online (Sandbox Code Playgroud)
和
@synthesize str = _str;
Run Code Online (Sandbox Code Playgroud)
我应该在实例方法中访问它吗?
_str = @"ABC";
Run Code Online (Sandbox Code Playgroud)
或者我应该使用访问者,即
[self setStr:@"ABC"];
Run Code Online (Sandbox Code Playgroud)
有关于此的一般指导原则吗?
非常感谢!
当我在另一个晚上处理游戏时,我意识到我可以通过使用_myObject而不是减少方法调用的数量来提高我的"tick"代码的性能self.myObject.
假设这myObject是一个属性,由编译器隐式合成,并且已经有一个值,那么底层的那个与顶层的那个做同样的事情吗?
// Non-ARC
self.myObject = [self someValue];
_myObject = [self someValue];
Run Code Online (Sandbox Code Playgroud) 嗨我知道当使用箭头符号(->)访问C中的成员时,* .每次需要访问对象时都需要同时使用star和dot().
但在Objective-C中,self.myivar和之间有什么区别self->myivar?我注意到它们都适用于我的情况,我将myivar声称为属性.