我目前使用一个缓存清单(如描述在这里).这有效地使得在用户离线时运行应用程序所需的资源.
不幸的是,它运作得有点好.
加载缓存清单后,Firefox 3.5+将缓存缓存清单中显式引用的所有资源.但是,如果服务器上的文件已更新,并且用户尝试在线时强制刷新页面(包括缓存清单本身),Firefox将绝对拒绝提取任何内容.应用程序在缓存的最后一点保持完全冻结.问题:
如果我为类创建的类别添加的方法也符合协议规定的合同,我想将该类别标记为实现协议,从而向Obj-C预处理器指示class也有效地实现了协议.
示例代表(为了清楚起见,感谢Ole!):
@protocol SomeDelegate <NSObject>
- (void)someDelegateMessage;
@end
Run Code Online (Sandbox Code Playgroud)
示例类别:
@interface NSObject (SomeCategory) <SomeDelegate>
- (void)someDelegateMessage;
@end
Run Code Online (Sandbox Code Playgroud)
并且具有其他典型的实现
@implement NSObject (SomeCategory)
- (void)someDelegateMessage {}
@end
Run Code Online (Sandbox Code Playgroud)
当我实际尝试这个时,我会收到每个NSObject方法的警告:
警告:类别'SomeCategory'的执行不完整
警告:找不到'-description'的方法定义
...
警告:找不到'-isEqual:'的方法定义
警告:类别'SomeCategory'没有完全实现'NSObject'协议
如果我<SomeDelegate>从声明中删除,工作正常,但当然NSObject不被识别为SomeDelegate
更新:对于您可以导入到Eclipse中的CSV,请检查此Gist [Ed:或不...看起来它已经填满了?标记应该是关键图标的位置]
讨论
我已经在OS X中避免了Java开发一段时间了,只是因为Eclipse的UI与OS X的HIG非常不一致.其中最重要的是它的精简窗口,但完全不可接受的Mac默认密钥绑定.
我正在修复我可以使用的键绑定Preferences -> Keys,但有一些是有问题的.
配置窗格的屏幕,如果有人找不到它: alt text http://i47.tinypic.com/2dm7ow.jpg
绑定到目前为止我已经改变了: [注意:如果其中任何一个看起来很奇怪,我试图在Mac上没有更广泛的标准快捷方式的情况下尽可能模仿Xcode]
Name | Old Command | New Command
----------------------------------------------------
Content Assist | Ctrl-Space | Escape
Redo | Cmd-Y | Cmd-Shift-Z
Find Next | Cmd-K | Cmd-G
Find Previous | Shift-Cmd-K | Shift-Cmd-G
Backward History| Cmd-[ | *Unbind Command*
Forward History | Cmd-] | *Unbind Command*
Properties | Alt-Return | Cmd-I
Debug | Cmd-F11 | Cmd-Y
Run (in Windows)| Cmd-Shift-F11 | Cmd-R
Build Clean … 因此,我希望避免使用ERB处理JavaScript文件,这样我就可以获得适当的资产路径,例如图像.
目前,这似乎是流行的方法:
var myImage = "<%= asset_path('my_image') %>";
当然,这需要将文件名更改为"*.erb",以便进行处理.
我更倾向于将ERB丑陋与我项目中的一个点隔离,制作一个清单文件(例如"assets.js.erb")来计算并提供我需要的所有资产路径.
我当然可以通过逐案解决来做到这一点:
ASSETS =
"my_image": "<%= asset_path('my_image') %>"
window.assetPath = (path) -> ASSETS[path]
Run Code Online (Sandbox Code Playgroud)
但是,我真的宁愿只写一些ERB来递归我的所有内容asset_paths.asset_environment.paths并为我构建一个大的对象文字清单,这样我真正的应用程序JavaScript就可以自信地调用:
var myImage = assetPath('my_image');
关于(1)的任何想法是否有更容易的方法来做我错过的,或者(2)我如何完成对所有潜在有效参数的搜索asset_path?
我testdouble在node.js项目中用于存根调用.这个特殊的功能是包装一个promise并then在函数本身内有多个调用.
function getUser (rethink, username) {
return new Promise((resolve, reject) => {
let r = database.connect();
r.then(conn => database.table(tablename).filter({username}))
.then(data => resolve(data))
.error(err => reject(err));
});
}
Run Code Online (Sandbox Code Playgroud)
所以我想确定是否根据错误条件正确处理resolve和reject处理.假设我需要验证一些自定义逻辑.
为了我的考试
import getUser from './user';
import td from 'testdouble';
test(t => {
const db = td.object();
const connect = td.function();
td.when(connect('options')).thenResolve();
const result = getUser(db, 'testuser');
t.verify(result);
}
Run Code Online (Sandbox Code Playgroud)
问题是connect的结果需要是一个promise,所以我使用一个值来解析,该值需要是另一个解析或拒绝的promise.
与之相关的database.connect()是不是承诺的结果.
TypeError: Cannot read property 'then' of undefined
Run Code Online (Sandbox Code Playgroud)
任何人都可以成功使用Test Double来阻止这种类型的通话吗?
我想从iPhone SDK中提取默认的UIBarButtonItem图标.我想他们可能只是作为alpha-channel-only PNG存储在iPhoneSimulator平台上,但我还没有找到它.
我正在寻找的是UIBarButtonSystemItemReply.(对于那些可疑的,甚至有一个有效的用例,我希望在用户可以发布回复的表行标题上使用它,行方式)
每个新的iPhone SDK项目都会创建一个[ApplicationName] -Info.plist文件.我的问题:将自定义属性键添加到Info.plist并以编程方式访问它们还是应该在单独的plist中创建它是否常规?
也许它并不重要,但使用bundle描述符plist我的自定义属性感觉很脏.
[请注意,我不是在询问面向用户的属性或设置,因此我不是指使用"设置"捆绑包.]
情况非常简单.我有一个Java webapp,我正在转换为使用Maven构建.目前,应用程序使用Ant构建到单个WAR文件中,然后使用非常简单的application.xml将其捆绑到EAR中.
maven-war-plugin和maven-ear-plugin看起来都相当简单的我,看来他们设置我将不得不考虑上述两个不同的项目,该项目WAR的EAR项目的依赖.这似乎有点不方便,特别是因为WAR项目的配置文件设置将针对每个环境进行更改,这似乎会强制我在每次尝试构建EAR时复制该构建调整.
所有这一切:是否有一种直接的方式来构建WAR并将其打包到这个简单易用的EAR中?我想避免将它们作为两个单独的项目进行维护,但同样也不愿意使用程序集来实现这一目标.
更新:似乎最近的XCode更新可能已更改此宏,请参阅此问答以获取更多信息:在XCode中获取较旧的SDKROOT行为
情况:我在iPhone项目上使用libxml2,并且我已经相对于SDK版本添加了它.但是,为了在项目中实际使用它,需要将其添加到项目设置中的标题搜索路径.
我希望这完全与SDK版本无关,因此标题搜索路径也应该与SDK版本相关,但是没有明显的方法来扩展表示SDK文件夹的变量.
例如,这是实际的文字路径:
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/usr/include/libxml2
我希望能够表达
$ MAGICAL_BASE_SDK_VARIABLE/usr/include目录/ libxml2的
这是可以使用XCode完成的吗?
看起来最近的Xcode 3.2增加了一些代码生成细节(我认为)缺乏雪豹之前.
我采取了以下步骤:
使用一些实体定义一个简单的.xcdatamodel模型,包括一个(不可逆)一个:多个关系(一个Endpoint有很多Subscription对象)
文件 - >新建,然后选择(无图标)"托管对象类".从那个向导,我选择了我的课程,我参加了比赛.
直到,也就是说,我试图建立.我得到这个结果,但无法弄清楚:
未定义的符号: "_OBJC_METACLASS _ $ _ NSManagedObject",从引用:_OBJC_METACLASS _ $ _认购在认购-B5BE258DF28BC03B.o _OBJC_METACLASS _ $ _端点Endpoint.o "_OBJC_CLASS _ $ _ NSManagedObject",从引用:_OBJC_CLASS _ $ _认购在认购-B5BE258DF28BC03B.o _OBJC_CLASS _ $ _端点Endpoint.o ld:未找到符号collect2:ld返回1退出状态
我喜欢的帮助:
如果有人对我刚做错的事情有任何想法,那就太棒了.
看起来让Xcode生成你的类的唯一方法是File - > New并再次替换它们,其中(除其他外)会导致对新类的重复引用,并且你的旧类文件无用地留在项目中的移动文件夹.有谁知道如何正确保持这些同步?我还没有找到任何涵盖新内容的Apple文档.
iphone ×4
xcode ×2
caching ×1
categories ×1
cocoa ×1
cocoa-touch ×1
core-data ×1
eclipse ×1
erb ×1
firefox ×1
header-files ×1
html ×1
html5 ×1
java ×1
libxml2 ×1
macos ×1
maven-2 ×1
node.js ×1
objective-c ×1
pom.xml ×1
protocols ×1
rethinkdb ×1
sprockets ×1
test-double ×1
testdoublejs ×1