有没有办法从Apple Watch推出iOS应用程序?
编辑: - 尝试使用下面的两个api但不起作用: -
Apple Watch Code
调用insideController.m
+ (BOOL)openParentApplication:(NSDictionary *)userInfo reply:(void(^)(NSDictionary *replyInfo, NSError *error)) reply; // launches containing iOS application on the phone. userInfo must be non-nil
Run Code Online (Sandbox Code Playgroud)
iOS代码
在Appdelegate.m内部调用
- (void) application:(UIApplication *) application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *))reply
Run Code Online (Sandbox Code Playgroud) 我试图在Swift的IF语句中使用元组作为可选绑定,但它不会编译,并且该错误消息不太有用.以下为什么不编译?
let user:String? = "billy"
let pass:String? = "password"
if let test = (user?,pass?){
print("this works")
}
Run Code Online (Sandbox Code Playgroud)
或这个
let user:String? = "billy"
let pass:String? = "password"
if let test = (user,pass){
print("this works")
}
Run Code Online (Sandbox Code Playgroud) 给定一个数组定义如下
let list: [Any]
Run Code Online (Sandbox Code Playgroud)
我想将其排序WHEN
ElementElement是Comparable.所以我需要一个函数,当数组以类似下面的方式填充时
let list: [Any] = [10, 11, 0, 2, -1]
let list: [Any] = ["Red", "Green", "Blue"]
let list: [Any] = [true, false, true, true]
Run Code Online (Sandbox Code Playgroud)
确实返回排序的数组.
另一方面,当list包含以下示例之一时
let list: [Any] = [CGPointZero, CGPoint(x:1, y:1)] // CGPoint is not comparable
let list: [Any] = [10, "Hello"] // Values of different types
Run Code Online (Sandbox Code Playgroud)
我想要nil作为回报值.
任何的想法?
我知道Swift确实鼓励我们程序员每次有意义时都使用常量(let)而不是变量(var).
这是一件好事,因为我们正在向编译器提供有关我们的代码意味着什么的更多细节,并且编译器可以更好地防止我们犯错误(例如,更改一些不应更改的值).
我的问题是,当我们使用常量而不是变量时,编译器是否会应用一些性能优化?(例如,执行时间更短,占地面积更小,......).
有一些我不了解Swift如何管理内存地址 String(s)
这里foo和boo是2个指针指向相同的内存位置.
class Foo { }
let foo = Foo()
let boo = foo
unsafeAddressOf(foo) // "UnsafePointer(0x7FCD13719BE0)"
unsafeAddressOf(boo) // "UnsafePointer(0x7FCD13719BE0)"
Run Code Online (Sandbox Code Playgroud)
好.
let word0 = "hello"
let word1 = word0
Run Code Online (Sandbox Code Playgroud)
现在,word0和word1是value types但这里的copy on write机制是参与.
[...]但是,当绝对必要时,Swift仅在幕后执行实际复制.Swift管理所有值复制以确保最佳性能,您不应该避免分配以尝试抢占此优化.https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ClassesAndStructures.html#//apple_ref/doc/uid/TP40014097-CH13-XID_134
那他们为什么有2个不同的内存地址呢?
unsafeAddressOf(word0) // "UnsafePointer(0x7FCD1342ACE0)"
unsafeAddressOf(word1) // "UnsafePointer(0x7FCD13414260)"
Run Code Online (Sandbox Code Playgroud)
同时请注意,String是struct那个莫名其妙符合到AnyObject.
使用Xcode 7 GM Playground和Swift 2.0进行测试.
正如Apple在"Swift编程语言"中所说,似乎我们应该unowned比weak任何可能的更喜欢:
如果捕获的引用永远不会变为nil,则应始终将其捕获为无主引用,而不是弱引用.
从本页的"弱和无主参考"部分
我确实知道这两者之间的区别.但我好奇的是有没有很好的理由,宁愿 unowned比weak?我认为weak更安全,我们可以总是编写[weak obj]和可选的绑定检查,而不考虑存在的可能性obj.
它与某些性能考虑或我错过的东西有关吗?或者是否完全可以使用weak而不是一直使用unowned?
给定一组值如何将其拆分为由sub-arrays相等的元素组成?
鉴于此数组
let numbers = [1, 1, 1, 3, 3, 4]
Run Code Online (Sandbox Code Playgroud)
我想要这个输出
[[1,1,1], [3, 3], [4]]
Run Code Online (Sandbox Code Playgroud)
解决这个问题的一种可能方法是创建某种索引来指示每个元素的出现.
let indexes = [1:3, 3:2, 4:1]
Run Code Online (Sandbox Code Playgroud)
最后使用索引重建输出数组.
let subsequences = indexes.sort { $0.0.0 < $0.1.0 }.reduce([Int]()) { (res, elm) -> [Int] in
return res + [Int](count: elm.1, repeatedValue: elm.0)
}
Run Code Online (Sandbox Code Playgroud)
但是,使用此解决方案,我将失去原始值.当然在这种情况下它不是一个大问题(Int值仍然是,Int即使重新创建)但我想将此解决方案应用于更复杂的数据结构,如此
struct Starship: Equatable {
let name: String
let warpSpeed: Int
}
func ==(left:Starship, right:Starship) -> Bool {
return left.warpSpeed …Run Code Online (Sandbox Code Playgroud) 我正在研究Swift,并且对以下语法感到困惑:
var treasures: [Treasure] = []
Run Code Online (Sandbox Code Playgroud)
宝藏是自定义类,声明如下:
class Treasure: NSObject {
...
Run Code Online (Sandbox Code Playgroud)
在Obj-C中,方括号表示方法,但这意味着什么:
var treasures: [Treasure] = []
Run Code Online (Sandbox Code Playgroud)
有人可以提供解释吗?谢谢!
我偶然发现了一个问题,我无法弄清楚如何解决它.
假设我们有一个基类(可能来自FrameworkA),其属性名为subject:
public class MyClass {
public var subject: String
}
Run Code Online (Sandbox Code Playgroud)
我们有一个协议(可能来自FrameworkB),另一个属性但具有相同的名称:
public protocol MyProtocol {
var subject: String { get }
}
Run Code Online (Sandbox Code Playgroud)
这两个属性代表完全不同的东西.
如何创建一个继承MyClass和实现的类MyProtocol?我该如何使用这些属性?
public class SecondClass: MyClass, MyProtocol {
var MyProcotol.name: String { // <==== Obviously not allowed
return "something"
}
var MyClass.name: String { // <==== Obviously not allowed
return "something else"
}
}
Run Code Online (Sandbox Code Playgroud)
我认为C#允许这样的声明,但我不是100%肯定...
swift ×8
arrays ×3
ios ×2
apple-watch ×1
constants ×1
generics ×1
inheritance ×1
ios7 ×1
objective-c ×1
oop ×1
optional ×1
performance ×1
protocols ×1
sorting ×1
sprite-kit ×1
string ×1
value-type ×1
watchkit ×1