相关疑难解决方法(0)

代表的非保留数组

在Cocoa Touch项目中,我需要一个特定的类,不仅要有一个委托对象,还要有很多委托对象.

看起来我应该为这些代表创建一个NSArray; 问题是NSArray会保留所有这些代理,它不应该保留(按惯例对象不应该保留它们的代理).

我应该编写自己的数组类来防止保留还是有更简单的方法?谢谢!

iphone cocoa-touch delegates retain nsarray

43
推荐指数
5
解决办法
1万
查看次数

ARC下归零弱引用的集合

如何在ARC下获得一系列归零弱引用?我不希望数组保留对象.我希望数组元素在被释放时自行删除,或者将这些条目设置为nil.

同样,我怎么能用字典做到这一点?我不希望字典保留值.再次,我希望字典元素要么在取消分配值时删除自己,要么将值设置为nil.(我需要保留密钥,这是唯一的标识符,至少在相应的值被释放之前.)

这两个问题涉及类似的问题:

但两者都没有要求归零.

根据文档,NSPointerArray和NSHashMap都不支持ARC下的弱引用.NSValue的nonretainedObjectValue也不起作用,因为它是非归零的.

我看到的唯一解决方案是创建我自己的类似NSValue的包装类,其中包含一个(weak)属性,正如这个答案提到的那样,接近结尾.有没有更好的方式我没有看到?

我正在为OS X 10.7和iOS 6.0开发.

cocoa cocoa-touch weak-references objective-c automatic-ref-counting

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

如何获取NSObject的引用计数?

有没有办法获取NSObject(即NSString)的当前引用计数?

cocoa objective-c

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

Objective-c多播代表

我在xcode中创建了新的选项卡式视图项目,在appdelegate中我创建了一个协议

.h文件

@protocol myProtocol <NSObject>
-(void)myProtocolMethodOne;
@end
.
.
.
@property (weak) id<myProtocol> mypDelegate;
Run Code Online (Sandbox Code Playgroud)

.m文件

@synthesize mypDelegate;
.
.
.
//Inside didFinishLaunchingWithOptions
[mypDelegate myProtocolMethodOne];
Run Code Online (Sandbox Code Playgroud)

在firstViewController和secondViewController中(两者都显示为两个不同的选项卡)我在两者中都这样做了

AppDelegate *ad = (AppDelegate*)[[UIApplication sharedApplication]delegate];
    [ad setMypDelegate:self];
.
.
.
-(void)myProtocolMethodOne
{
    NSLog(@"1st VC");
    [[self tabBarItem]setBadgeValue:@"ok"];
}
Run Code Online (Sandbox Code Playgroud)

代码工作正常,但只有secondViewController响应.

我正在寻找一种使用委托而不是通知的广播和监听器机制.

我搜索了很多,但没有找到任何解决方案,除了这个,但代码是提前为我明白,所以我采取了循序渐进的方式通过启动形式一个简单的项目明白这一点.请帮我解决这个问题.两个视图控制器如何同时响应委托,我该怎么办?

protocols objective-c ios

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