相关疑难解决方法(0)

@synthesize究竟做了什么?

我见过以下代码:

//example.h
MKMapView * mapView1;
@property (nonatomic, retain) MKMapView * mapView;

//example.m
@synthesize mapView = mapView1
Run Code Online (Sandbox Code Playgroud)

问题:mapViewmapView1之间有什么关系?它是否为mapView1创建了setget方法?

谢谢 !

iphone objective-c

147
推荐指数
6
解决办法
8万
查看次数

@synthesize window = _window做什么?

我知道@synthesize window;结合@property'自动创建'你的setter和getter,但我不确定当你分配一个像这样的值时会发生什么

 @synthesize searchBar = _searchBar;
Run Code Online (Sandbox Code Playgroud)

这是否意味着我可以简单地在我的方法中使用_searchBar而不是说self.searchBar?

是否使用此委托方法防止ivar名称的冲突:

- (void) searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
Run Code Online (Sandbox Code Playgroud)

它是否相当于self.searchBar而不是searchBar或者那两个相同?

iphone objective-c

36
推荐指数
3
解决办法
1万
查看次数

属性与实例变量

我试图理解一些人用来区分实例变量和属性的策略.常见的模式如下:

@interface MyClass : NSObject {
    NSString *_myVar;
}

@property (nonatomic, retain) NSString *myVar;
@end

@implementation MyClass
@synthesize myVar = _myVar;
Run Code Online (Sandbox Code Playgroud)

现在,我认为这个策略背后的整个前提是可以很容易地区分出伊达和财产之间的区别.所以,如果我想使用由合成属性继承的内存管理,我会使用如下内容:

myVar = @"Foo";
Run Code Online (Sandbox Code Playgroud)

另一种方式是通过自我引用它.[ivar/property here].

使用@synthesize myVar = _myVar策略的问题是,我认为编写代码如:

myVar = some_other_object; // doesn't work. 
Run Code Online (Sandbox Code Playgroud)

编译器抱怨myVar未声明.为什么会这样?

谢谢.

iphone cocoa cocoa-touch objective-c

33
推荐指数
3
解决办法
1万
查看次数

Objective-C合成属性名称覆盖

我试图理解synthesize具有属性名称覆盖的指令的目的.假设我有一个接口定义如下:

@interface Dummy ... {
    UILabel *_dummyLabel;
}

@property (retain, nonatomic) UILabel *dummyLabel;
Run Code Online (Sandbox Code Playgroud)

在实现文件中,我有:

@synthesize dummyLabel = _dummyLabel;
Run Code Online (Sandbox Code Playgroud)

据我所知,"dummyLabel"只是实例变量"_dummyLabel"的别名.self._dummyLabel和self.dummyLabel之间有什么区别吗?

synthesizer objective-c

15
推荐指数
3
解决办法
2万
查看次数

使用@synthesize覆盖Objective-C中的属性访问者名称

我正在尝试找到有关如何使用@synthesize覆盖Objective-C中的属性名称的文档.如果我有一个实例变量名称'foo',我想把它的访问者写成'bar'.

做某事如

@synthesize foo = bar;
Run Code Online (Sandbox Code Playgroud)

给出编译时错误.

objective-c

4
推荐指数
2
解决办法
3533
查看次数

标签 统计

objective-c ×5

iphone ×3

cocoa ×1

cocoa-touch ×1

synthesizer ×1