自从我开始学习Objective C和Cocoa以来,我一直想知道为什么他们为实现文件选择了扩展名.m它应该是什么意思,还是只是一个随机字母?有人知道吗?我在谷歌的任何地方都找不到这样的信息......
我希望看到自上次提交以来修改的文件列表,如图git status
所示,但我只关心位于单个目录中的文件.有没有办法做到这一点?我尝试过git status <directory>
,但似乎这完全不同(列出所有更改过的文件,就像我git add <directory>
先写的那样).
git-status的文档并没有说明多少,除了它接受git-commit所做的相同选项(但git-commit的目的不是显示已更改文件的列表).
我正在编写一个应该嵌入其他人的网站(一种小部件)的Web应用程序.我正在使用Google Analytics跟踪在嵌入网站上访问我脚本的所有实例的所有人.问题是我不知道如何使用它,因此它不会干扰这些网站自己的Google Analytics帐户.我将跟踪器变量存储在命名空间中,所以我认为应该这样做,但我没有意识到GA将其设置存储在cookie中(__ utma,__ utmz等),并且这些cookie由两个跟踪器使用,如果在同一页面上有两个...例如,如果我使用_setVar在Google Analytics中存储某种用户定义的变量,并且嵌入网站也是如此,我们会覆盖彼此的值......
当然,如果谷歌提供了一种将cookie的名称更改为自定义的方法,那将是最简单的,但我找不到任何方法来做到这一点.我想过使用cookie域或路径强制单独的cookie,但这不起作用,因为如果我将域或路径设置为真实域/路径以外的其他内容,则重新加载后该页面的cookie不可读. ..
有没有人知道在一个页面上有两个跟踪器并让它们使用单独的cookie以便它们不会覆盖彼此的设置?
或者,如果那是完全不可能的 - 是否有任何其他分析服务具有与GA类似的功能?(它必须具有事件和广告系列跟踪等高级功能......)
在最新的iOS SDK中,Apple提供了三种编译器选项:GCC,带Clang的LLVM和LLVM-GCC.我或多或少地了解这3个意思,LLVM和Clang是什么,等等.我不知道的是这对iPhone开发者来说意味着什么.从2011年1月开始,我现在应该使用以下哪些?LLVM是否足够成熟以至于我可以安全地使用它而不会经常绊倒它中的错误?切换到LLVM有什么其他缺点吗?如果确实如此,那么速度优势是否会超过它们?除速度外还有其他原因要切换吗?
我想知道是否有任何关于在Rails应用程序中放置非标准Ruby文件的最佳实践,哪些不适合任何默认目录(controllers
/ models
等).
我说的是控制器/模型等使用的类,但不是任何Rails基类的子类.包含从模型中提取的功能的类,以减少它们的负担.其中一些看起来像模型,但不是AR模型,其中一些看起来更像"服务",有些是介于两者之间或其他东西.
一些随机的例子:
我现在已经有了很多这些,其中一些被添加到lib
最后作为一堆随机类和模块,一些潜入app/models
.我想以某种方式组织这个,但我不知道从哪里开始.
只应该进入AR车型app/models
吗?或者也可以放置任何域或帮助模型?你如何决定某件事是模特?
如果不适合的一切都app
进入lib
?或许我应该添加一些新的自定义子目录app
?什么子目录,以及如何划分自定义类?
你如何在你的项目中处理这个?我知道每个项目都有点不同,但必须有一些相似之处.
有人可以向我解释NSTextField和NSTextView之间的主要区别是什么?我知道NSTextView有更多的功能,通常用于更长的文本,NSTextField通常用于单行纯文本字段,但如果我理解正确,NSTextField也可以用于属性字符串和多行......
我特别需要的是一个控件,它可以在Tweetie或任何其他类似软件中的时间线视图中显示消息文本.我唯一的要求是:
有了这样的要求,我使用NSTextField或NSTextView会更好吗?NSTextField是否足够好,或者NSTextView是否具有NSTextField不重要的东西?
(重复这个问题,但我想我可以再试一次,因为那个没有回答......)
iPhone上的UISearchBar有一个选项showsSearchResultsButton.当你打开它时,它会在搜索栏中显示一个带有水平线的按钮,你可以实现一个在用户按下时调用的回调.
问题是,我在互联网上找不到一个地方,它说明了这个按钮的预期用途.我知道我可以做任何事情,但我想知道它实际上是什么.它应该显示搜索历史,还是没有过滤的所有项目,或者是什么?
MKMapView
在Interface Builder中向视图添加组件时,可以使用复选框配置它显示的内容:
当您选中"用户位置"时,它会自动在地图上显示用户的位置.
但是,从iOS 8开始,您应该在显示用户位置之前询问位置许可.如果不这样做,您将在控制台中收到"尝试启动MapKit位置更新而不提示"警告.
所以我已经NSLocationWhenInUseUsageDescription
为plist 添加了一个键,并将此代码添加到viewDidLoad
:
if CLLocationManager.authorizationStatus() == .NotDetermined {
CLLocationManager().requestWhenInUseAuthorization()
}
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用.我确实得到了一个要求许可的弹出窗口,但在我选择一个答案之前,它自己隐藏,地图加载到它下面,我在控制台中收到警告.
我知道showsUserLocation
只有获得许可后我才能在代码中设置属性; 但我的观点是,IB中的这个复选框应该做同样的事情,除了它立即开始跟踪.这是否意味着自iOS 8以来我们根本不应该使用此复选框?还是我错误地使用它?
-
更新:实际上,无论是否设置"显示用户位置",弹出窗口都会自行隐藏.我尝试过viewWillAppear
或者viewDidAppear
做过,但这没有帮助.所以,我不知道究竟在何处,我应该叫requestwhenInUseAuthorization
使用时MKMapView
...
我正在MKAnnotationView
我的项目中创建一个子类.它需要有两个属性来存储子视图,我需要在开头的某个地方进行初始化.
MKAnnotationView
在其文档中列出了一个初始化程序initWithAnnotation:reuseIdentifier:
,所以我想我只是覆盖它:
class PulsatingDotMarker: MKAnnotationView {
let innerCircle: UIView
let outerCircle: UIView
override init!(annotation: MKAnnotation!, reuseIdentifier: String!) {
innerCircle = ...
outerCircle = ...
super.init(annotation: annotation, reuseIdentifier: reuseIdentifier)
}
...
}
Run Code Online (Sandbox Code Playgroud)
但这会导致运行时异常:
致命错误:对'PulsatingDotMarker'类使用未实现的初始化程序'init(frame :)'
好的,所以我猜initWithAnnotation:reuseIdentifier:
内部调用initWithFrame:
,所以可能是我应该覆盖的那个.我们试试看:
class PulsatingDotMarker: MKAnnotationView {
let innerCircle: UIView
let outerCircle: UIView
override init(frame: CGRect) {
innerCircle = ...
outerCircle = ...
super.init(frame: frame)
}
...
}
Run Code Online (Sandbox Code Playgroud)
但是,这会在创建注释视图对象时导致编译错误:
调用中的额外参数'reuseIdentifier'
嗯,所以如果我实现(必需的)初始化器initWithFrame:
,它现在会丢失默认的初始化器initWithAnnotation:reuseIdentifier:
?
也许如果我添加一个覆盖initWithAnnotation:reuseIdentifier:
,只是调用super …
Xcode 4有一个非常好的内置帮助/文档,您可以访问,例如通过在代码中单击alt标识符,或打开右侧边栏中的帮助面板.但是,这仅适用于Apple提供的类和方法.有没有办法在自己的代码中编写某种文档注释(例如Java中的Javadoc注释),以使Xcode在这些文档面板中显示它们?
我在iPhone上使用NSURLConnection异步连接进行请求缓存时遇到了一个小问题.我不知道我是否理解错误的东西,或者Cocoa是否与它应该做的相反...
NSURLRequest的文档说:
NSURLRequestReloadIgnoringLocalCacheData
指定应从原始源加载URL加载的数据.不应使用现有的缓存数据来满足URL加载请求.
和:
NSURLRequestReloadIgnoringLocalAndRemoteCacheData
指定不仅应忽略本地缓存数据,而且应指示代理和其他中间人在协议允许的情况下忽略其缓存.
现在,如果我使用NSURLRequestReloadIgnoringLocalCacheData(它应该忽略本地缓存,但使用远程缓存,如果可用)发送NSURLRequest,则发送的标头是:
GET /dashboard HTTP/1.1 User-Agent: XBlip1.0 CFNetwork/422.15.2 Darwin/9.6.0 (i386) (iMac8%2C1) X-Blip-Api: 0.02 Accept: application/json Authorization: Basic (...) Accept-Language: en-us Accept-Encoding: gzip, deflate Connection: keep-alive Host: api.blip.pl
状态是200 OK.但是,如果我使用NSURLRequestReloadIgnoringLocalAndRemoteCacheData,它应该忽略本地和远程缓存,顾名思义,添加了一个额外的标头:
If-None-Match: "d751713988987e9331980363e24189ce"
并且响应是304 Not Modified.我已经检查了HTTP RFC,并且对于"If-None-Match"它说:
如果任何实体标签与在该资源上对类似GET请求(没有If-None-Match标头)的响应中返回的实体的实体标签匹配,(...)则服务器不得执行请求的方法(...)相反,如果请求方法是GET或HEAD,服务器应该响应304(未修改)响应
因此,如果我使用NSURLRequestReloadIgnoringLocalAndRemoteCacheData而不是忽略远程缓存,Cocoa似乎明确告诉远程服务器它应该使用远程缓存,如果我使用NSURLRequestReloadIgnoringLocalCacheData,它不会添加该行,实际上远程缓存不是用过的.
那究竟发生了什么?我错过了什么,或者Cocoa设置了错误的标题?
我希望有一个看起来或多或少像Tweetie中的消息列表的视图(见截图)(不,它不会是Twitter客户端,虽然它类似;).我不确定我应该使用哪些Cocoa视图...我最近为iPhone编写的东西,并且那里只有一个这样的控件(UITableView),但在AppKit中有几个.我应该使用NSTableView,还是NSCollectionView,还是其他更适合的地方?
iphone ×3
objective-c ×3
cocoa ×2
cocoa-touch ×2
directory ×2
ios ×2
macos ×2
mapkit ×2
clang ×1
cookies ×1
git ×1
http ×1
initializer ×1
ios8 ×1
javascript ×1
llvm ×1
message ×1
models ×1
nstableview ×1
nstextfield ×1
nstextview ×1
organization ×1
ruby ×1
search ×1
status ×1
swift ×1
text ×1
uisearchbar ×1
widget ×1
xcode ×1
xcode4 ×1