iphone - 我确信变量范围存在问题

标签 iphone objective-c ios

我基本上遇到了变量范围的问题。了解多种编程语言,有时我就是无法理解 obj-c。

在我的 webviewcontroller 类中,我有一个使用 self.var 调用的变量

我还有一些引用修改后的 UIAlertView 的委托(delegate)方法。为什么我不能在这些方法中引用这个 self.var 而不会导致整个应用程序崩溃?

我已经尝试了所有方法,已经过去几天了,现在我需要帮助!

谢谢!

编辑:

这是代码webviewcontroller.h

    #import "SBTableAlert.h"

    @interface WebViewController : UIViewController <SBTableAlertDelegate, SBTableAlertDataSource>{
            NSMutableArray *bookmarks;
    }
    @property (nonatomic, retain) NSMutableArray *bookmarks;

这里是 .m(是的,我有一个用于书签的@synthesize),这是在 View 中加载的

    NSMutableArray *tmpArray = [tmpDict objectForKey:@"myKey"];
    self.bookmarks = tmpArray;
    [tmpDict release];
    [tmpArray release];

    SBTableAlert *bookmarkAlert;

    bookmarkAlert = [[SBTableAlert alloc] initWithTitle:@"Jump to:" cancelButtonTitle:@"Back" messageFormat:nil];
    [bookmarkAlert.view setTag:1];
    [bookmarkAlert setDelegate:self];
    [bookmarkAlert setDataSource:self];

NSString *settingsicon = [[NSBundle mainBundle] pathForResource:@"gear" ofType:@"png"];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageWithContentsOfFile:settingsicon] style:UIBarButtonItemStylePlain target:bookmarkAlert action:@selector(show)];

后来我尝试调用 self.bookmarks

    - (NSInteger)tableAlert:(SBTableAlert *)tableAlert numberOfRowsInSection:(NSInteger)section {
            return [self.bookmarks count];
    }

我在 self.bookmarks 计数中遇到的错误是 NSInvalidArgumentException

最佳答案

如果没有看到您的一些代码,就很难回答。

就像 Farmer_Joe 所问的那样,您如何定义该属性?像这样的东西:

@property (nonatomic, retain) MyVar *var;

不同于

@property MyVar *var;

你如何分配给var?

var = value;

不会启动保留,但是这会(如果该属性被定义为“保留”):

self.var = value

编辑:根据您发布的新代码,您似乎过度释放了 tmpArray。删除这一行:

[tmpArray release];

您不必释放 tmpArray,因为这一行不会保留它:

NSMutableArray *tmpArray = [tmpDict objectForKey:@"myKey"];

关于iphone - 我确信变量范围存在问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7612144/

相关文章:

iphone - UIPickerView 设置选中

ios - 从 Storyboard 中完全删除 uiimageview?

ios - 有时 NSManagedobject 对象在将对象从一个 Controller 传递到另一个 Controller 时会出错,有没有办法将对象作为值类型 objC 传递

ios - 找不到设备支持文件

iphone - 在 AVCaptureStillImageOutput 类中设置图像捕获 View

iphone - 如何在动画与不动画时不重复此代码?

Objective-C 运行时代码生成

ios - 如何在不同的 Viewcontroller 中获取我的计数器

iphone - GKSession sendDataToAllPeers 在客户端上?

iphone - bundle 标识符与先前的 bundle 标识符不同