我有一个在iOS应用程序和扩展程序之间共享的动态框架.该框架中有一些代码引用UIApplication,当然,这些代码在扩展中不可用.这些电话是完全孤立的,所以我并不担心它们会导致我的分机出现问题.
由于警告消息中没有指定标志,可能无法执行此操作,但在构建项目时如何抑制 warning: linking against dylib not safe for use in application extensions?
我正在为我正在编写的地图坐标函数编写一些单元测试.不幸的是,XCTest正在发生一些事情,我无法确定是否导致我的测试失败:
NSString *testValue = @"121°31'40\"E";
double returnValue = coordinateStringToDecimal(testValue);
static double expectedValue = 121.5277777777778;
XCTAssertEqual(returnValue, expectedValue, @"Expected %f, got %f", expectedValue, returnValue);
Run Code Online (Sandbox Code Playgroud)
我确实读过这个类似的问题来排除故障.但是,我能够验证数字和类型是否相同.以下是检查每个值类型的控制台输出:
(lldb) print @encode(__typeof__(returnValue))
(const char [2]) $5 = "d"
(lldb) print @encode(__typeof__(expectedValue))
(const char [2]) $6 = "d"
Run Code Online (Sandbox Code Playgroud)
调试器中的变量视图显示它们是相同的:

有趣的是在lldb中比较它们的控制台输出:
(lldb) print (returnValue == expectedValue)
(bool) $7 = false
Run Code Online (Sandbox Code Playgroud)
类型相同,实际数字相同.为什么我的断言会失败?
我有一个应用程序,我想添加静态和动态应用程序快捷方式项目的混合.使用动态项目进行本地化非常简单,NSLocalizedString但使用info.plist中的项目并非如此.我已经有一个InfoPlist.strings文件用于本地化我的应用程序的名称,但我不太确定静态UIApplicationShortcutItems是如何工作的,因为这些项目没有唯一的密钥.
你如何本地化静态UIApplicationShortcutItems?
考虑模块中的跟随类(同样适用于结构):
public class Foo {
public func bar() {
// method body
}
}
Run Code Online (Sandbox Code Playgroud)
注意,它没有显式初始化器; 这个例子不需要任何特殊的初始化.此类将被暴露给其他模块,因为它已被标记public.但是,当模块外部的代码尝试初始化它时,编译器会抱怨:
let foo = Foo() // 'Foo' initializer is inaccessible due to 'internal' protection level
Run Code Online (Sandbox Code Playgroud)
为了满足编译器,我必须定义一个标记的显式空初始化器public:
public class Foo {
public init() {
// This initializer intentionally left empty
}
public func bar() {
// do something useful
}
}
Run Code Online (Sandbox Code Playgroud)
为什么,如果类明确public,我是否需要明确定义公共初始化程序?它不应该暗含一个公共初始化器吗?
还有一个相关的问题在这里,关于单元测试,但我发现它并没有真正得到的是什么,我觉得是一个令人惊讶的问题设计的核心理念.
Apple是否为开发人员提供了一套不同语言的标准术语?我之所以要问的是,我的部分应用程序已经本地化,并希望在整个应用程序中始终如一地应用标准术语.我通过更改设备上的语言并观察Apple如何用其他语言解释这些术语,利用一些策略来执行"加载..."之类的术语.然而,到目前为止,这只能让我获得,而且我可以提供翻译的资源可以通过术语的一致应用创造无缝体验.
我一直在开发一个非常图形密集的iPad应用程序.我已经能够在iPad 2上挤出相当多的性能,但新iPad的@ 2x显卡在内存部门打包了很多.使用仪器中的活动监视器我能够看到我的应用程序的大小迅速增加到300MB-400MB范围,但我没有收到任何低内存通知.我使用a UINavigationController来管理我的视图,因此进入堆栈会对内存产生累积影响,最终会终止.我没有在iPad 2上遇到这个问题,我收到了预期的低内存通知.我的应用程序已被编码为尽可能清理并在该设备上表现良好.
我已经阅读了一些类似的问题:
IOS应用程序因低内存而被杀,但没有内存警告收到
iPhone应用程序使用150 MB内存,仍然没有低内存警告!
这些建议似乎都没有帮助.
我插入了代码以强制发送低内存通知:
[[UIApplication sharedApplication] _performMemoryWarning];
Run Code Online (Sandbox Code Playgroud)
这会导致非活动视图按预期卸载并将内存消耗恢复正常.这使用私有API并且是hack,因此出于实际原因不是解决方案. 如何让我的设备正确响应低内存条件,让我的应用程序知道它需要清理?
我有一个mac在工作,并希望在家里将我的键绑定同步到它.我没有在"首选项"菜单中看到导出按钮.是否有其他方法导出我的自定义键绑定?
我有一个使用StoryBoards的项目,并UISearchDisplayController在a的上下文中使用UINavigationController,它出现在根视图控制器中.当我将一个新的视图控制器推入堆栈并导致模拟内存警告(或实际上得到一个低内存警告).上一个视图控制器成功卸载其视图.但是,当我从堆栈中弹出第二个视图控制器时,我得到了一个EXC_BAD_ACCESS.我打开了NSZombies并发现了这个:
[UISearchDisplayController retain]:发送到解除分配的实例0xb13aa30的消息
我不是(至少在我的代码中)将该消息发送给UISearchDisplayController.用编程方式说,我没有做任何事情.断点显示我甚至没有进入viewDidLoad第一个视图控制器.
但是好奇的是:对于笑声和咯咯笑声,我决定彻底retain改变我的SDC viewDidLoad,只是为了看看会发生什么,不会发生崩溃.但是,我的UISearchDisplayController实例是nil.
我做了一个回溯并得到了这个输出:
#0 0x01e30e1e in ___forwarding___ ()
#1 0x01e30ce2 in __forwarding_prep_0___ ()
#2 0x01dd1490 in CFRetain ()
#3 0x01eb69c0 in +[__NSArrayI __new::] ()
#4 0x01e0a00a in -[__NSPlaceholderArray initWithObjects:count:] ()
#5 0x01e34f52 in +[NSArray arrayWithObjects:count:] ()
#6 0x01e5e084 in -[NSDictionary allValues] ()
#7 0x01035272 in -[UINib instantiateWithOwner:options:] ()
#8 0x00edce2c in -[UIViewController _loadViewFromNibNamed:bundle:] ()
#9 0x00edd3a9 in -[UIViewController loadView] …Run Code Online (Sandbox Code Playgroud) 我是一名经验丰富的iOS开发者,我决定尝试一些AppKit开发.我正在进行一些API调整,但是否则我发现OS X开发是"熟悉的".
我一直在Interface Builder中构建我的AppKit UI,并注意到当我使用WYSIWYG编辑器在我的代码文件中创建属性时,Apple正在创建以下内容:
@property (assign) IBOutlet NSTableView *tableView;
Run Code Online (Sandbox Code Playgroud)
我发现这很奇怪,因为iOS中默认的做事方式会让我这样做:
@property (nonatomic, retain) IBOutlet NSTableView *tableView;
Run Code Online (Sandbox Code Playgroud)
我意识到在Mac开发中我没有与移动设备相同的内存限制,视图可以卸载,并且可能需要对UI元素进行强引用.
在AppKit的情况下,我可以很好地假设我的UI元素将始终存在,除非我摆弄视图层次结构并将其从父视图中删除.在任何时候都有一个强有力的参考,以防止无意中访问悬空指针似乎是明智的.
为什么Apple会在这里创建一个弱引用,而不是强大的引用呢?
我是否通过使用强引用(但正确释放dealloc)为自己设置了一些意想不到的后果?这里有一些我错过的模式吗?
有没有人知道或有一本关于如何使用linea-pro在xcode中编写脚本的手册.
我已经在网上搜索并向Infinite Peripherals寻求帮助但没有回复.
我找到了一个".a"和".h"文件,看起来像是有所有代表团等,但我不知道如何操作一些功能.
如果您需要更多信息,请询问.
ios ×5
objective-c ×3
iphone ×2
localization ×2
3dtouch ×1
appkit ×1
ipad-3 ×1
linea-pro ×1
swift ×1
swift3 ×1
uistoryboard ×1
unit-testing ×1
xcode ×1
xcode4.5 ×1