qst*_*tar 3 pointers properties objective-c primitive-types
我真的需要一些澄清 - 我有几个问题,我现在都搞砸了.
这是一个简单的类接口:
#import <UIKit/UIKit.h>
@interface Car : NSObject{
NSInteger carID;
NSString *carName;
}
@property (nonatomic, assign) NSInteger carID;
@property (nonatomic, copy) NSString * carName;
@end
Run Code Online (Sandbox Code Playgroud)
carID不被声明为指针?carID而不是"copy"?NSInteger它只是一个原始类型的typedef(int在32位,long在64位上) - 它不是一个对象,因此不能保留或复制.
班级成员总是指针; 你永远不会传递"真实"的物体; 因为那将至多是无法控制的.
编辑:扩展最后一段:Objective-C类实例总是存在于堆上,永远不会存在于堆栈中; 这是为了方便引用计数和自我管理对象生命周期等事情.
这也意味着很难意外复制一个物体; 但另一方面,意外处理您仍然需要的物体可能会更容易一些.尽管如此,后者更容易调试(因为它导致一个不错的,大的崩溃(最好,无论如何)),而不是最后一次(最糟糕的是导致缓慢的泄漏).
| 归档时间: |
|
| 查看次数: |
4001 次 |
| 最近记录: |