我正在开始一个新的BREW项目,我想编译警告级别4(/ W4)以保持应用程序代码的美观和干净.问题是BREW标头本身不能用/ W4干净地编译.
在gcc中,您可以使用-I和-isystem来区分应用程序和系统头,然后默认情况下gcc不报告系统头中的任何编译警告.Visual C++中是否有等效的机制?
我有一个Android应用程序,在values/strings.xml中有英文字符串.对于该文件中的每个字符串,我在values-ja/strings.xml中有一个条目,其中包含该字符串的日语翻译.如果我将模拟器,Nexus One或Nexus S设置为日语,则UI会显示日语文本.大多数时候.
有时,UI的某些部分将以英语显示,即使当前区域设置为ja-JP.例如,我在我的一个活动的onCreate()方法中编写了这个测试代码:
Log.e(TAG, "Default locale = '" + Locale.getDefault().toString() + "'");
Log.e(TAG, "My string = '" + getResources().getString(R.string.my_string) + "'");
Run Code Online (Sandbox Code Playgroud)
有时我会在LogCat中看到:
Default locale is 'ja_JP'
My string is '??'
Run Code Online (Sandbox Code Playgroud)
其他时候我会看到:
Default locale is 'ja_JP'
My string is 'English'
Run Code Online (Sandbox Code Playgroud)
有时通过旋转手机可以解决此问题.有时它会通过退出并重新启动应用程序来解决.有时只有一个屏幕的一部分是英文的.有时,通过代码从资源中提取的字符串会出现此问题,有时会出现仅由布局引用的字符串.我的应用程序中没有任何地方可以调用Locale.setDefault(),因此不会导致问题.
UPDATE
我找到了一种方法来纠正特定活动的问题.在该活动的onCreate()中:
Log.e(TAG, "getString: '" + getString(R.string.my_string) + "'");
Log.e(TAG, "getResources().getConfiguration(): '" +
getResources().getConfiguration().toString() + "'");
Log.e(TAG, "getResources().getDisplayMetrics(): '" +
getResources().getDisplayMetrics().toString() + "'");
Log.e(TAG, "Setting configuration to getConfiguration()");
getResources().updateConfiguration(getResources().getConfiguration(),
getResources().getDisplayMetrics());
Log.e(TAG, "getString: '" + getString(R.string.my_string) + "'");
Log.e(TAG, "getResources().getConfiguration(): …Run Code Online (Sandbox Code Playgroud) 我正在使用OpenSSL的c库生成椭圆曲线Diffie-Hellman(ECDH)密钥对,遵循此处的第一个代码示例.它掩盖了这一行的实际公钥交换:
peerkey = get_peerkey(pkey);
Run Code Online (Sandbox Code Playgroud)
所述pkey变量和返回值的类型都是的EVP *.pkey包含先前生成的公钥,私钥和参数,返回值仅包含对等方的公钥.所以这提出了三个问题:
get_peerkey()实际提取公钥pkey以便发送给对等方?pKey密钥交换后提取私钥和params 来存储它们以供以后使用?get_peerkey()生成新EVP_PKEY结构?我已经看到了OpenSSL的功能EVP_PKEY_print_public(),EVP_PKEY_print_private()和EVP_PKEY_print_params()但这些是用于产生人类可读输出.我还没有找到任何将人类可读的公钥转换回EVP_PKEY结构的等价物.
AppBrain的Fast Web Install能够将应用程序从他们的网站直接推送到Android手机上,无需用户干预.这需要用户的Google帐户凭据或身份验证令牌,因此显然它使用的是某些Google API.有一个非官方的Android Market API项目,但不包括应用程序安装.
那么它是怎样工作的?
我正在设计一个将由其他开发人员使用的iOS静态库.该库需要提供自己的模态UI.我正在寻找最简单的方法来设计应用程序和这个库之间的接口来实现这一目标.我只需要支持iOS 4.0及更高版本.
粗糙的建筑
我的静态库有一个非常简单的API,只有一个类.应用程序的AppDelegate实例化这一个类并将其自身设置为委托,以便它可以接收通知.当应用程序希望库显示其UI时,它会调用单个方法,然后当库完成其工作时,它会通过其中一个委托协议的方法发送通知.
我可以看到两种方法来实现这一目标.
选项1
当应用程序希望库显示其UI时,AppDelegate会传入self.window,并且库会设置自己的根视图控制器,从而有效地获取UI的完全所有权.UI完成后,它会通知AppDelegate,AppDelegate会在窗口上设置自己的根视图控制器,从而收回UI的所有权.
选项2
该库公开了一个视图控制器,应用程序可以将其推送到它喜欢的任何视图堆栈上.当库通知UI已完成时,应用程序还负责删除视图控制器.
问题
使用选项1,在运行应用程序的过程中更改根视图控制器可能会出现问题.对于选项2,可能存在提供可在任意上下文中工作的视图控制器的问题(作为全窗口视图控制器,作为UINavigationController的子视图等).
这两个选项的另一个问题是AppDelegate可能收到的其他UIApplicationDelegate通知,例如applicationWillResignActive:和applicationDidBecomeActive:.库可能需要处理这样的通知以正确维护其UI.当UI处于活动状态时,AppDelegate是否必须将其中的每一个传递给库?
有没有更好的选择3我没有想到?
我正在构建一个使用核心数据,NSDocument,故事板和Cocoa绑定的OS X应用程序.
我的期望是发生以下情况:
创建MyDocument(NSDocument子类)的实例.
MyDocument创建NSManagedObjectContext表示文档数据的核心数据.
MyDocumentNSWindowController通过其标识符从故事板中实例化一个.
在故事板中,窗口控制器包含DocumentEditorViewController(NSViewController子类),用于显示和编辑文档.
在故事板中,DocumentEditorViewController有一个NSArrayController绑定到MyDocument托管对象上下文.
在故事板中,DocumentEditorViewController有一个绑定到的表视图NSArrayController.
这样,UI中的任何更改都可以使用它NSManagedObjectContext,而无需任何粘合代码.
我希望这是直截了当的,因为我相信我正按照预期的方式使用这些技术.但是我无法使绑定工作,特别是在第5步和第6步.我发现的所有项目模板和示例项目都不使用Core Data,不使用故事板,或者不使用NSDocuments.
应该绑定哪些对象?NSArrayController的类,键和密钥路径应该是什么?
回答这个问题的另一种方法是指出一个使用所有这些技术的工作示例项目.
android ×2
brewmp ×1
c ×1
core-data ×1
delegates ×1
getstring ×1
ios ×1
locale ×1
localization ×1
modal-dialog ×1
nsdocument ×1
openssl ×1
pki ×1
push ×1
visual-c++ ×1