相关疑难解决方法(0)

performSelector可能导致泄漏,因为其选择器未知

ARC编译器收到以下警告:

"performSelector may cause a leak because its selector is unknown".
Run Code Online (Sandbox Code Playgroud)

这是我正在做的事情:

[_controller performSelector:NSSelectorFromString(@"someMethod")];
Run Code Online (Sandbox Code Playgroud)

为什么我会收到此警告?我理解编译器无法检查选择器是否存在,但为什么会导致泄漏?我怎样才能更改我的代码,以便我不再收到此警告?

memory-leaks objective-c ios automatic-ref-counting

1251
推荐指数
15
解决办法
18万
查看次数

在自动引用计数下,为什么不允许保留,释放和释放?

当尝试使用-retain,-release并-dealloc在使用Xcode 4.2中的自动引用计数构建我的应用程序时,我收到如下错误:

自动引用计数禁止'dealloc'的显式消息发送

为什么我看到这个错误?在自动引用计数下是否-retain,-release并且-dealloc不再允许这样做?

objective-c automatic-ref-counting

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

'release'不可用:在自动参考计数模式下不可用

我正在学习如何使用"Head first iPhone and iPad development"(第二版)这本书在iOS操作系统上进行编程.

截图

当我尝试编译本书中的代码时,我得到错误,即release在引用计数模式下不允许使用use 关键字.

在这种情况下,我是否必须明确释放内存?如果是 - 如何?

objective-c ios

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

编译时出现ARC错误

我正在尝试使用LLVM GCC 4.0编译器进行编译,并且在我的.m文件的多个中出现此错误:ARC禁止显式消息发送'release'我尝试使用-fno-objc-arc作为编译器标志但是返回错误:无法识别的命令行选项"-fno-objc-arc".

我怎么解决这个问题?

objective-c ios automatic-ref-counting

8
推荐指数
1
解决办法
4万
查看次数

autorelease在自动引用计数模式下不可用

可能重复:
我得到此错误'autorelease'不可用:在自动引用计数模式下不可用

我正在学习Objective-C,这是一本名为Objective-C基础知识的书,发表于2011年.它正在构建一个简单的应用程序来介绍iOS概念并教授Objective-C语言.似乎自本书出版以来,平台或语言发生了一些变化.当我尝试从书中构建代码时(以下摘录的关键段落),我收到此错误:

autorelease is unavailable: not available in automatic reference counting mode
ARC forbids explicit message send of 'autorelease'
Run Code Online (Sandbox Code Playgroud)

错误消息出现在上面几行,其中autorelease实际上在代码中使用.

我只有大约1小时的Objective-C和iOS经验,所以我不知道如何解决这个问题,所以我可以继续阅读这本书.任何帮助,将不胜感激.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView
                             dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil){                        #### error message here
        cell = [[[UITableViewCell alloc]
                initWithStyle:UITableViewCellStyleDefault
                 reuseIdentifier:CellIdentifier]autorelease];  ### autorelease used here
    }
    cell.textLabel.text = [NSString
                           stringWithFormat:@"Rental Property %d", indexPath.row];
    NSLog(@"Rental Property %d", indexPath.row);
    return cell; 
}
Run Code Online (Sandbox Code Playgroud)

如果我无法解决这些类型的小问题,那么我将无法跟上这本书.如果我可以使用某种版本系统(比如rvm for Ruby)来避免这类问题,请告诉我.

memory-management objective-c ios

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