Objective C具有错误访问权限的静态类成员

时间:2014-12-23 11:45:28

标签: ios objective-c arrays static-members

我正在尝试使用这里的静态变量tagsToCheck,可以从这个类中的所有静态方法访问。 什么是最好的方法?

保留在这里解决问题,但这是正确的方法吗?

tagsToCheck = [@[@"<html>", @"<br>", @"<br />", @"<br/>", @"<p>", @"<div>", @"<b>",
                              @"<i>", @"<font>", @"<ul>", @"<li>"] retain];

原始代码是,

static NSArray * tagsToCheck = nil;

@implementation DictionaryUtil

+ (void) initialize {
    tagsToCheck = @[@"<html>", @"<br>", @"<br />", @"<br/>", @"<p>", @"<div>", @"<b>",
                              @"<i>", @"<font>", @"<ul>", @"<li>"];
}

+ (BOOL) isHtml:(NSString *)string
{
    if (!string) return NO;

    for (NSString *tag in tagsToCheck) { // bad access here for tagsToCheck
        if ([string rangeOfString:tag options:NSCaseInsensitiveSearch].location != NSNotFound) {
            return YES;
        }
    }
    return NO;
}

2 个答案:

答案 0 :(得分:0)

是的,Objective-C数组文字是autorelease d对象,因此使用retain是正确的。

答案 1 :(得分:0)

使用retain 不是最好的方法。最好的方法是启用自动引用计数