小编zou*_*oul的帖子

屏幕上有多个视图控制器?

我试图在Cocoa Touch中围绕控制器.主要问题是我希望同时在屏幕上显示多个控制器 - 我希望有一个大视图(控制器A)由他们自己的控制器控制的较小视图组成(比如说B).我希望这样做,因为该部门使代码更清晰.有什么不好的是,附加控制器(B类)不是屏幕上的"一等公民",例如他们没有收到自动轮询查询和通知.(并且无法轻松显示模态控制器,他们必须将presentModal…消息发送到其父控制器.)

Cocoa观点的A和B控制器之间有什么区别?系统是否保留某种指向"最前面的控制器"的指针,这是一个特权的指针,它发送通知和这些东西?为什么其他控制器不接收它们,即使它们的视图在屏幕上?在屏幕上有多个控制器被认为是黑客?或者它是否受到支持,我只是错过了一些观点?谢谢.


更多关于我试图解决的问题:我正在编写一个简单的照片浏览器.照片以全屏显示,用户可以向左或向右滑动以更改照片.A控制器负责滚动部分,B控制器负责处理每张照片本身.

隔离B似乎是一个好主意,因为照片是从网络加载的,并且有很多可能发生的事情,比如网络可能已经停止等等.在B控制器中,代码非常简单,因为B仅适用于一张特定的照片.如果我将代码移动到A控制器,事情会变得混乱.

我唯一不喜欢当前的解决方案是我必须手动解决B不是"一流"控制器.我必须通过A到B手动传递一些调用,当B想要显示模态对话框时,它必须发送presentModal…给A.这很难看.

iphone cocoa-touch uiviewcontroller

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

如何声明由可变类型支持的不可变属性?

我想声明一个公共不可变属性:

@interface Foo
@property(strong, readonly) NSSet *items;
@end
Run Code Online (Sandbox Code Playgroud)

...在实现文件中以可变类型支持:

@interface Foo (/* private interface*/)
@property(strong) NSMutableSet *items;
@end

@implementation
@synthesize items;
@end
Run Code Online (Sandbox Code Playgroud)

我想要的是实现中的可变集合,当从外部访问时,它会被转换为不可变的集合.(我并不关心调用者是否可以将实例强制转换NSMutableSet并打破封装.我住在一个安静,体面的城镇,这样的事情不会发生.)

现在我的编译器将属性视为NSSet实现内部.我知道有很多方法可以让它工作,例如使用自定义getter,但有没有办法简单地使用声明的属性?

properties objective-c

20
推荐指数
3
解决办法
3452
查看次数

为什么不[NSDictionary allKeys]返回一组?

是否有理由NSDictionary将其键返回NSArray而不是NSSet?文档已经指出数组中键的顺序是未定义的,使用集合听起来合乎逻辑.

cocoa nsdictionary

19
推荐指数
1
解决办法
2002
查看次数

在Xcode中复制捆绑资源时解析符号链接

我在Xcode中有一个项目,还有一些项目资源.资源包含几个符号链接.当Xcode构建项目时,它会复制资源,但不会解析符号链接.有没有办法让Xcode解析链接?(即复制链接目标而不是链接本身.)

更新:谢谢,mouviciel,差不多就是这样.起初我尝试使用"复制文件"阶段进行此操作,但pbxcp此阶段调用的程序也没有解析链接,即使有一些调用的开关-resolve-src-symlinks.我最后添加了一个运行脚本阶段调用这样的东西:

rsync -pvtrlL --cvs-exclude \
    $PROJECT_DIR/../Resources* \
    $BUILT_PRODUCTS_DIR/$CONTENTS_FOLDER_PATH
Run Code Online (Sandbox Code Playgroud)

幸运的副作用是我不再需要更新Xcode中的Resources组,无论在Resources目录中完成的任何更改是否立即可见.

xcode symlink

18
推荐指数
1
解决办法
5728
查看次数

我每次画东西时都应该调用glEnable和glDisable吗?

我应该多久调用一次和/ glEnable()glEnableClientState()相应的OpenGL函数glDisable?它们是否应该在应用程序开始时调用一次,还是应该禁用它们并且仅启用我立即需要绘制某些内容的那些功能?有性能差异吗?

opengl

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

您是否将Perl应用程序开发为CPAN模块?

最近我读了一篇博文,说开发Perl应用程序就像开发CPAN模块一样.(这是 - 感谢大卫!)给出的原因之一是你可以简单地cpan .在项目目录中运行以安装所有依赖项.这听起来很合理,我也喜欢你得到的"统一界面".当您遇到这样的应用程序时,您知道makefile的功能等等.这种方法的其他优点和缺点是什么?


更新:感谢您的回答.我还有一个关于依赖安装的问题,我会单独发布.

deployment perl maintenance

18
推荐指数
2
解决办法
953
查看次数

如何从UIButton获取图像?

我在我的应用程序中有自定义按钮,我已经设置了图像.我想从按钮获取图像并存储在UIImage变量中.请指导我.

objective-c uibutton ios

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

为什么我的NSMutableArray子类不能按预期工作?

我已经将NSMutableArray子类化如下:

基类:

@interface MyBaseMutableArray : NSMutableArray {
    // Database variables
    NSString * databaseName;
    NSString * databasePath;
}

@property (nonatomic, retain) NSString * databasePath;

- (id)initWithContentsOfSQLiteDB:(NSString *)dbTable;
-(void) checkAndCreateDatabase;
-(void) readFromDatabase;

@end
Run Code Online (Sandbox Code Playgroud)

子类:

@interface IngredientsMutableArray : MyBaseMutableArray
{

}

-(void) readFromDatabase;

@end
Run Code Online (Sandbox Code Playgroud)

当我创建一个IngredientsMutableArray时,我执行以下操作:

IngredientsMutableArray * i  = [[IngredientsMutableArray alloc]
    initWithContentsOfSQLiteDB:@"MyIngredientsDB.sql"];
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试执行[self addObject:ingred]时,我抛出异常如下:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSArray count]: method only defined for abstract class.  Define -[IngredientsMutableArray count]!'
Run Code Online (Sandbox Code Playgroud)

我相信我没有正确初始化NSMutableArray.我打算给我们initWithCapaciity,但我不知道SQL调用之前的计数.我认为我忽略了一些显而易见的事情,但对于Objective CI来说,有些新手却有点迷茫.

任何帮助表示赞赏.

objective-c nsmutablearray

18
推荐指数
2
解决办法
7102
查看次数

SLComposeViewController dismisses differently for Facebook and Twitter?

I have some social sharing code that looks like this:

SLComposeViewController *composer = [SLComposeViewController composeViewControllerForServiceType:…];
[composer setInitialText:…];
[composer addURL:…];
[composer setCompletionHandler:^(SLComposeViewControllerResult result) {
    [someController dismissViewControllerAnimated:YES completion:^{
        … // 1
    }];
}];
[someController presentModalViewController:composer animated:YES];
Run Code Online (Sandbox Code Playgroud)

The problem is that the code behaves differently for Facebook and Twitter. When the user confirms the Facebook compose screen, the composer apparently dismisses itself, because the completion handler marked as 1 is never called and even when I remove the dismissViewControllerAnimated: call, everything works fine. …

ios slcomposeviewcontroller

18
推荐指数
1
解决办法
4159
查看次数

我如何使用AVAssetWriter?

我想拍摄一些视频帧并将它们编码成视频.看起来这正是它的AVAssetWriter意思,但无论我如何看待文档和谷歌我都找不到任何方法来实际使用它.从文档中看起来我需要一个input(AVAssetWriterInput)来从中提供编写器.精细.但是这个AVAssetWriterInput类是抽象的,我在4.1中知道的唯一子类是AVAssetWriterInputPixelBufferAdaptorAVAssetWriterInput在初始化器中需要一个......?我错过了一些明显的东西吗?

avfoundation ios avassetwriter

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