我正在开发一款带有一系列迷你游戏的游戏.在一个游戏视图中,我有以下代码:
UIImage* img = [UIImage imageNamed:@"foo.png"];
someImage = CGImageRetain(img.CGImage);
[img release];
Run Code Online (Sandbox Code Playgroud)
someImage的类型为CGImageRef,这在第一次没有问题.在用户输掉迷你游戏(或退出)后,游戏和所有内容似乎都得到了正确的解除.然后,如果他们回到迷你游戏,并且游戏再次构建,那么该行:
someImage = CGImageRetain(img.CGImage);
Run Code Online (Sandbox Code Playgroud)
导致某种错误......几乎就像我的UIImage对象已经被释放了一样.我知道使用[UIImage imageNamed]有一些怪癖,但我根本无法追踪它.任何帮助将不胜感激 :)
我正在尝试通过基本的iPhone编程工作,我对Interface Builder的工作方式有了很好的基本了解,所以我决定尝试以编程方式执行视图.我已经浏览了ViewController Apple指南,并在各处搜索,我似乎无法找到解决问题的方法.这让我相信这是一个非常简单的解决方案,但我只是在撞墙而已.基本上我所要做的就是创建一个视图,将主窗口作为子视图.我知道如果没有定义self.view,那么应该调用loadView方法,并且应该在那里设置所有内容.这是我的代码的当前状态:
代表:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
StartMenuViewController *aViewController = [[StartMenuViewController alloc] init];
self.myViewController = aViewController;
[aViewController release];
UIView *controllersView = [myViewController view];
window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
[window setBackgroundColor:[UIColor redColor]];
[window addSubview:controllersView];
[window makeKeyAndVisible];
}
Run Code Online (Sandbox Code Playgroud)
视图控制器:
- (id)init {
if (self = [super init]) {
self.title = @"Start Menu";
}
return self;
}
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
UIView *startView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame];
[startView …Run Code Online (Sandbox Code Playgroud) 我有以下伪SQL架构:
table flight
id int primary key
date timestamp
aircraft_id int (foreign key to aircraft.id)
table flight_component
flight_id int (foreign key to flight.id)
component_id int (foreign key to component.id)
duration double
Run Code Online (Sandbox Code Playgroud)
如果我将其转换为使用CoreData,是否有一种等效方法可以使用另一个查询谓词来获取每个组件的总持续时间?我认为SQL等价物
select component_id, sum(duration)
from flight_component
join flight on (flight_component.flight_id = flight.id)
where flight.date between ? and ?
group by component_id
Run Code Online (Sandbox Code Playgroud)
或者我将不得不进行查询,然后自己总结所有组件?
我在CoreData中创建了一个实体,其中包含一个实现为NSDictionary的Transformable属性类型.NSDictionary属性仅包含自定义类的值.自定义类的属性都是NSString类型.自定义类符合NSCoding实现:
- (无效)encodeWithCoder:(NSCoder*)编码器;
- (id)initWithCoder:(NSCoder*)编码器
第一次保存实体时,包括Transformable(NSDictionary)类型在内的所有属性都正确保存在数据库中.当从DB获取并更新相同的实体(包括Transformable属性)时,它似乎正确更新.但是,当应用程序关闭然后重新打开时,获取Entity并不显示更新的Transformable属性类型,尽管NSDate和NSString类型的其余属性是最新的.Transformable属性是原始保存的值,而不是更新的值.
这是KVO的一个问题,还是我在尝试将填充了自定义类的NSDictionary保存到CoreData时遗漏了其他内容?
- (void)setFirstName:(NSString*)firstNameValue {
[self willChangeValueForKey:@"firstName"];
[firstName release];
firstName = firstNameValue;
[firstName retain];
[self didChangeValueForKey:@"firstName"];
}
Run Code Online (Sandbox Code Playgroud)
是对的吗?所以willChange ... foobar doChange ...阻止导致KVO通知开火?
你可以在脚本桥上使用KVO吗?
我想知道我是否可以为我的应用程序创建一个Scripting Bridge接口,并允许通过观察我的应用程序的一个SB命令返回的对象来通知客户端应用程序.
这可能吗?如果没有,还有什么选择?
所以我正在开发一个测试应用程序,可以将文件本地下载到应用程序文件存储沙箱中.其中一些文件可能很敏感,需要加以保护.我的应用程序有一个登录机制,所以如果你没有登录,你将无法访问这些文件,所以我主要关注的是能够嗅探内容(也许是在越狱设备上?).
现在我想知道保护这些文件的最佳方法是单独加密每个文件吗?或者也许有一种方法来加密整个沙箱?或者它是默认加密的?有没有人以前做过这样的事情?
我为一长串问题道歉,我想在做出设计决定之前尽可能多地收集有关这方面的信息......
谢谢!
我将旧应用程序从Swift 3迁移到Swift 4,并遇到了以下错误:
error: Multiple commands produce '/Users/.../Library/Developer/Xcode/DerivedData/ ... /Debug-iphonesimulator/CompassV3.swiftmodule/x86_64.swiftmodule':
1) Target 'CompassV3' (project 'Void Navigator'): Ditto /Users/.../Library/Developer/Xcode/DerivedData/.../Debug-iphonesimulator/CompassV3.swiftmodule/x86_64.swiftmodule /Users/.../Library/Developer/Xcode/DerivedData/Void_Navigator-bogrvoiumgmhfwcpvocwtssiwgpm/Build/Intermediates.noindex/Void Navigator.build/Debug-iphonesimulator/CompassV3.build/Objects-normal/x86_64/CompassV3.swiftmodule
2) Target 'Outdoor Navigator' (project 'Void Navigator'): Ditto /Users/.../Library/Developer/Xcode/DerivedData/.../Debug-iphonesimulator/CompassV3.swiftmodule/x86_64.swiftmodule /Users/.../Library/Developer/Xcode/DerivedData/Void_Navigator-bogrvoiumgmhfwcpvocwtssiwgpm/Build/Intermediates.noindex/Void Navigator.build/Debug-iphonesimulator/Outdoor Navigator.build/Objects-normal/x86_64/CompassV3.swiftmodule
Run Code Online (Sandbox Code Playgroud)
CompassV3 构建应用
Outdoor navigator 是扩展。
看起来像是冲突,但我不知道如何解决。
这些项目仍在快速版本3中。
我需要使用NSImage,它似乎需要从中导入<AppKit/AppKit.h>.我已经包含了AppKit框架,我确实看到了AppKit.h.但我仍然得到编译错误说<AppKit/AppKit.h>找不到.
我可能错过了什么?
谢谢.
我有一个UIViewController管理一些数据的显示.当用户想要编辑这些数据时,我将编辑推UIViewController送到堆栈.当用户完成编辑时,顶部视图控制器从堆栈中弹出.在弹出编辑视图后,我知道需要更新显示的最优雅方式是什么?
我认为我可以将内容更新代码放入viewDidLoad我的数据视图的方法中,但是当我的视图显示时,并不总是调用此方法,尤其是当我在视图堆栈中向下导航时.
我还考虑将我的数据视图控制器设置为UINavigationController等待– navigationController:didShowViewController:animated:被调用的委托,我担心的是可能有其他视图控制器在显示时需要通知它会变成一个轻微的头痛管理哪个控制器应该接收didShowViewController消息.
cocoa-touch ×5
iphone ×5
core-data ×2
cocoa ×1
ios ×1
ipad ×1
nsdictionary ×1
objective-c ×1
swift ×1
xcode ×1
xcode10.1 ×1
xcodebuild ×1