小编iDe*_*Dev的帖子

在Modern Objective-C中覆盖setter和getter时访问生成的ivars时出错

我现在知道新的Objective-C编译器让你不再需要合成你的属性了.我有一个文件,里面有两个类.我的.h是一个简单的帮助类,如下所示:

@interface ViewFrameModel : NSObject

@property (nonatomic, strong) UIView *view;
@property (nonatomic, assign) CGRect frame;

- (id)initWithView:(UIView *)view frame:(CGRect)frame;

@end
Run Code Online (Sandbox Code Playgroud)

在同一个.h文件中,对于我的其他类(第2类),我有:

@property (nonatomic, strong) ViewFrameModel *viewFrameModel;
Run Code Online (Sandbox Code Playgroud)

在2.m级,我可以这样做:

- (void)setViewFrameModel:(ViewFrameModel *)viewFrameModel {
    _viewFrameModel = viewFrameModel;        
    [self pushViewFrameModel:viewFrameModel];
}
Run Code Online (Sandbox Code Playgroud)

这很好,没有编译器的抱怨,但是,当我添加这个:

- (ViewFrameModel *)viewFrameModel {
    return _viewFrameModel;
}
Run Code Online (Sandbox Code Playgroud)

我得到两个投诉,一个是第一种方法setViewFrameModel:

"使用未声明的标识符_viewFrameModel,你的意思是viewFrameModel"

而另一个回归_viewFrameModel:

"使用未声明的标识符_viewFrameModel,你的意思是viewFrameModel""引用在封闭上下文中声明的局部变量viewFrameModel"

为什么我在添加时会出现这些错误

- (ViewFrameModel *)viewFrameModel {
    return _viewFrameModel;
}
Run Code Online (Sandbox Code Playgroud)

方法?我想用一些自定义信息覆盖这个方法,但它在抱怨我: - .思考?TIA.

properties objective-c getter-setter ios

19
推荐指数
2
解决办法
3316
查看次数

iPhone设置背栏按钮项目的色调颜色

我试图在导航控制器中设置后退按钮的色调颜色,但没有任何工作.我试过了

[self.navigationController.backBarButtonItem setTintColor:myColor];
//myColor was previously set
Run Code Online (Sandbox Code Playgroud)

但它保持默认色调

iphone xcode uibarbuttonitem backbarbuttonitem

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

iPhone - 根据文字调整UILabel宽度

如何根据文字调整标签宽度?如果文本长度很小我想要标签宽度小......如果文本长度很小我想要标签宽度根据文本长度.可能吗?

实际上我有两个UIlabels.我需要把这两个放在附近.但如果第一个标签的文字太小,就会有很大的差距.我想消除这个差距.

iphone objective-c uilabel ios

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

GCD - 用于更新UIImageView的主要vs后台线程

我是GCD的新手,并阻止我进入它.

背景:我正在使用ALAssetsLibrary处理UIScrollView的延迟加载例程.当我的UIScrollView加载时,我用aspectRatioThumbnails我的ALAssets 填充它,然后当用户滚动时,我调用下面的例程来加载fullScreenImage当前正在显示的ALAsset.它似乎工作.

(如果有人有更好的延迟加载例程,请发表评论.我看过我能找到的所有内容以及WWDC视频,但他们似乎更多地处理平铺或者比我需要的更复杂)

我的问题:我使用后台线程来处理加载fullScreenImage,当完成后我使用主线程将其应用于UIImageView.我需要使用主线程吗?我已经看到所有UIKit更新都需要在主线程上发生,但我不确定这是否适用于UIImageView.我认为它确实如此,因为它是一个屏幕元素,但后来我才意识到我根本就不知道.

- (void)loadFullSizeImageByIndex:(int)index
{
    int arrayIndex = index;
    int tagNumber = index+1;
    ALAsset *asset = [self.assetsArray objectAtIndex:arrayIndex];

    __weak typeof(self) weakSelf = self;

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
        UIImage *tmpImage = [[UIImage alloc] initWithCGImage:asset.defaultRepresentation.fullScreenImage];

        if ([weakSelf.scrollView viewWithTag:tagNumber] != nil){

            dispatch_async(dispatch_get_main_queue(), ^{

                if ([weakSelf.scrollView viewWithTag:tagNumber]!= nil){
                    UIImageView * tmpImageView = (UIImageView*)[weakSelf.scrollView viewWithTag:tagNumber];
                    tmpImageView.image = tmpImage;
                }
            });
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

grand-central-dispatch ios

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

如何检查当前是否正在显示UIViewController?

如何检查UIViewController当前是否正在显示?

UIViewControllers正在倾听NSNotifications- 即使它们没有显示(即未显示).所以,我可以有10个UIViewController在背景中观察NSNotificationsNSNotificationCenter.当a NSNotification发布和接收时UIViewController,我想知道它是否正在显示.如果不是,我将设置一个布尔值,以便在显示视图时处理它.如果它当前正在显示,我会做更多的事情,比如立即更新表,等等......

objective-c uiviewcontroller nsnotification nsnotificationcenter ios

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

如何为NSPredicate连接两个字符串,即firstname和lastname

我有一个Person具有两个NSString属性的Object ; firstName and lastName.我目前正在使用NSPredicate这样的:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(firstName contains[cd] %@) OR (lastName contains[cd] %@)", searchText, searchText];
Run Code Online (Sandbox Code Playgroud)

所以,例如,说我正在寻找这个名字"John Smith".在我的搜索栏中,如果我输入"Joh",John Smith则会显示为选项.这很好,但如果我输入"John Sm"它将变为空白.

我如何加入firstName和lastName,predicate如果我正在搜索,"John Sm"那么John Smith仍然会显示为一个选项.

我希望这是有道理的.谢谢.

编辑:为了进一步澄清,我正在使用SearchDisplayController委托方法:

-(void)filterContentForSearchText:(NSString *)searchText scope:(NSString *)scope;
Run Code Online (Sandbox Code Playgroud)

我正在使用predicate这样的:

newArray = [personObjectArray filteredArrayUsingPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)

iphone objective-c nsstring nspredicate ios

14
推荐指数
1
解决办法
4292
查看次数

XCode:4.6 Lion:10.8 IOS 6.1错误:SBTarget无效

XCode:4.6 Lion:10.8 IOS 6.1错误:SBTarget无效,如何解决?

xcode ios ios6 xcode4.6

14
推荐指数
2
解决办法
8292
查看次数

是否有任何编译器/预处理器技巧来调试打印枚举的名称?

我经常发现自己编写辅助调试器方法,返回一个可打印的字符串,给定一些枚举值.这样做的原因是当你通常记录枚举时,你得到的只是一个数字.我讨厌不得不回到我的来源找出那个枚举是什么.所以我会做类似的事情

typedef enum
{
   kOne = 1,
   kTwo,
   kThree,
}
MyEnum;

NSString *debugStringForEnum(MyEnum e)
{
    switch ( e )
        case kOne:
            return @"One";
        case kTwo:
            return @"Two";
        ....
}

....
NSLog(@"My debug log: %@", debugStringForEnum(someVariable));
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,有没有办法避免编写所有这些帮助代码,只是为了看到枚举的标签值?

谢谢

c debugging clang

14
推荐指数
2
解决办法
1776
查看次数

"找不到NSObject的接口声明"?

所以我对这个问题进行了一些研究,但我还没有找到类似的东西......

所以我使用Xcode和Sparrow Framework在Obj-C中编写游戏.到目前为止,我一直在模拟器上工作,而且一切都很顺利.但是当我切换到在我的设备上运行它时,我会得到各种错误,应该是标准的,例如"无法找到NSObject的接口声明","未知的类型名称'NSMutableArray'"等我已经有了#在每个班级导入,所以你会认为它不应该发生,对吧?我觉得这只是一两行需要改变的地方 - 但我不知道在哪里或哪里.

如果有人有任何建议,将非常感谢.:)

编辑:这是一个给出错误的.h文件的屏幕截图 - 它似乎只出现在我创建的一些.h文件中.http://i.imgur.com/EuQh4.png

xcode objective-c ios sparrow-framework

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

如何将使用AVFoundation拍摄的照片保存到相册?

AVFoundation对于那些想要弄脏手的人来说非常棒,但仍然有很多基本的东西不容易想象如何将从设备拍摄的照片保存到相册

有任何想法吗?

iphone cocoa objective-c avfoundation ios

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