是否在Objective-C中使用"自我"或者只是一个好习惯?我一直没有使用它而根本没有使用它,我似乎没有注意到任何差异.反正不是暗示吗?
我是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.myVariable = obj;
和myVariable = obj;
,当我使用@propery
/ @synthesize
创建`MYVARIABLE?
我对目标C中声明的变量如何感到困惑.
1:我看到@property
并且使用了@synthesize
声明.我的问题是,这两个声明是什么?为什么他们总是一起使用?我想@synthesize
是创建getter和setter的捷径?
2:说,我想声明一个只能在声明的类中访问的NSMutableArray.我必须myArray = [[NSMutableArray alloc] init]
在使用该addObject
方法向其写入内容之前执行.我什么时候发布阵列呢?
3:是否有一种不同的方式来声明一个只能在声明可以在所有类中访问的类才能访问的变量?
4:类似于问题2,但现在变量是NSString.为什么我不必分配和初始化它在自己的类中共享相同的变量?请告诉我之间的不同self.myString = @"";
来myString = @"";
非常感谢.
我按照Apple的惯例编写了一个setter和getter方法,并注意到尽管没有变量,我仍然可以使用点语法访问setter和getter.这是正常的行为吗?是什么启用此功能?
例:
// Header definition. Keep in mind there is no class variable or @property for height.
- (void)setHeight:(float)height;
- (float)height;
// else using the dot syntax.
object.height = 10.0f;
Run Code Online (Sandbox Code Playgroud) 自从我开始进行iPhone开发以来,我一直很困惑,哪种方式是作为Class中的成员访问数据的最佳方式.
假设我有一个名为MyClass的类,其中我有:
@interface MyClass : NSObject {
int myInt;
}
@property (nonatomic, assign) int myInt;
Run Code Online (Sandbox Code Playgroud)
在实现中,最好是这样做:
myObject.myInt = 1;
Run Code Online (Sandbox Code Playgroud)
或这个?
[myObject setMyInt:1];
Run Code Online (Sandbox Code Playgroud)
这也适用于读取值.
int newInt = myObject.myInt;
Run Code Online (Sandbox Code Playgroud)
与
int newInt = [myObject myInt];
Run Code Online (Sandbox Code Playgroud)