我很少看到有人[weak self]在使用didSet.是否有一个原因?
我尝试[weak self]在我didSet的变量中使用:
var data: Dictionary<String, Any>! { // [1]
didSet { [2]
self?.layoutSubviews()
}
}
Run Code Online (Sandbox Code Playgroud)
要么我放在[weak self] in[1]或[2],我仍然得到错误:Use of unresolved identifier weak
这是为什么?使用它是非法[weak self]的didSet吗?
问候,
我想读取附件的信息HMAccessory,例如,序列号(HMCharacteristicTypeSerialNumber),制造商(HMCharacteristicTypeManufacturer),型号(HMCharacteristicTypeModel),但是在iOS11中它们都已弃用,根据此Apple文档在此处。
我知道我可以改为characteristicType直接使用字符串,如下所示:
HMCharacteristicTypeSerialNumber -> 00000030-0000-1000-8000-0026BB765291
HMCharacteristicTypeManufacturer -> 00000020-0000-1000-8000-0026BB765291
HMCharacteristicTypeModel-> 00000021-0000-1000-8000-0026BB765291
但是,这只会使我的代码“异常”。
您知道序列号,制造商和型号的特征类型的替代品吗?我已经搜索了几个小时,但仍然没有任何线索。
在我的 Node.js 代码中,我使用库请求站点request:
const httpReq = require("request")
function postJSON(uri, data, headers) {
if (uri.slice(-1) != "/") {
uri += "/"
}
console.log(`[postJSON] uri: ${uri}`)
console.log(`[postJSON] body: ${JSON.stringify(data, null, 2)}`)
console.log("[postJSON] headers", JSON.stringify(headers, null, 2))
return new Promise((resolve, reject) => {
httpReq(
{
method: "POST",
uri: uri + Math.floor(Math.random() * 100000000).toString(),
headers: headers,
json: data
}, function (err, resp, body) {
console.log(`[postJSON] done with error: ${err} -> ${uri}`)
if (err) {
reject(err)
}
else {
resolve(body)
}
}
) …Run Code Online (Sandbox Code Playgroud) 我在XCode 6中有一个混合语言项目Objective C和Swift.
Singleton.h
#import <Foundation/Foundation.h>
enum {
enum_A = 0,
enum_B,
enum_C,
enum_D,
enum_E,
enum_F,
enum_G,
} enums;
@interface Singleton : NSObject
+ (id)sharedSingleton;
@end
Run Code Online (Sandbox Code Playgroud)
Singleton.m
// Nothing's special in this file
#import "Singleton.h"
static Singleton *shared = nil;
@implementation Singleton
- (id)init {
self = [super init];
if (self) {
}
return self;
}
#pragma mark - Interface
+ (Singleton *)sharedSingleton {
static dispatch_once_t pred;
dispatch_once(&pred, ^{
shared = [[Singleton alloc] init];
});
return shared;
}
@end
Run Code Online (Sandbox Code Playgroud)
ViewController.swift …
我有这一系列的词典:
var dicts = [["key1": "value1", "key2": "value2"], ["key1": "value3", "key2": "value4"]]
Run Code Online (Sandbox Code Playgroud)
我应该如何扩展Array以便具有此功能:
dicts.values(of: "key1") // result: ["value1", "value3"]
Run Code Online (Sandbox Code Playgroud)
我试试这个:
extension Array where Iterator.Element == [String: Any] { // ERROR!
func values(of key: String) -> [Any]? {
var result: [Any]?
for value in self {
let val = value as! Dictionary<String, Any>
for k in val.keys {
if k == key {
if result == nil {
result = [Any]()
}
result?.append(val[k])
break
}
}
}
return result …Run Code Online (Sandbox Code Playgroud) 我正在开发一个混合语言项目,在XCode 6中结合了Objective C和Swift.
在这个项目中,Singleton(Objective C)类发布一个通知,然后由ViewController(Swift)接收.
Singleton.h
#import <Foundation/Foundation.h>
NSString *const notificationString = @"notificationString";
@interface Singleton : NSObject
+ (id)sharedSingleton;
- (void)post;
@end
Run Code Online (Sandbox Code Playgroud)
Singleton.m
#import "Singleton.h"
static Singleton *shared = nil;
@implementation Singleton
- (id)init {
self = [super init];
if (self) {
}
return self;
}
#pragma mark - Interface
+ (Singleton *)sharedSingleton {
static dispatch_once_t pred;
dispatch_once(&pred, ^{
shared = [[Singleton alloc] init];
});
return shared;
}
- (void)post {
char bytes[5] = {5, 7, 9, 1, 3};
NSDictionary …Run Code Online (Sandbox Code Playgroud) 我想问一下在这种情况下保留周期是否发生:
func someFunc() {
var aVar = SomeObj()
funcWithClosure(something, completionHandler: { _ -> Void in
aVar = SomeObj() // new
})
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我从闭包中返回aVar.我只是想知道这是否会产生保留周期.如果是真的,我应该修复:
func someFunc() {
var aVar = SomeObj()
funcWithClosure(something, completionHandler: { [weak aVar] _ -> Void in
aVar = SomeObj() // new
})
}
Run Code Online (Sandbox Code Playgroud) 我有这个游乐场:
import Foundation
enum WeekDay: Int {
case mon, tues, wed, thurs, fri, sat, sun
}
let wd = WeekDay(rawValue: 0)! // mon
let param = [wd: [1, 2, 3]]
message(dict: param)
func message(dict: [AnyHashable: [Int]?]) {
for (k, v) in dict {
print(k, type(of: k), v) // mon AnyHashable Optional([1, 2, 3])
if let k = k as? WeekDay {
print("got it: \(k)")
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我永远不会被got it: ...打印出来.
为什么我不能从一个人投AnyHashable来WeekDay?
我想AnyHashable在函数中使用的原因 …
我有一个UICollectionView我想要集成的内容UIRefreshControl,以便用户可以向下滑动以刷新.
说我的5件物品UICollectionView.如果我在iPhone5中运行我的应用程序,那么UIRefreshControl工作得很漂亮.但是,如果我在iPhone6Plus中运行它(所有5个项目都适合屏幕),那就UIRefreshControl不再适用了; 我甚至无法将其滑落.
是否有任何属性UIRefreshControl可以帮助用户在任何情况下向下滑动,无论屏幕大小是多少?我看了UIRefreshControl下面的课,但看起来这些都无济于事:
public init()
open var isRefreshing: Bool { get }
open var tintColor: UIColor!
open var attributedTitle: NSAttributedString?
// May be used to indicate to the refreshControl that an external event has initiated the refresh action
@available(iOS 6.0, *)
open func beginRefreshing()
// Must be explicitly called when the refreshing has completed
@available(iOS 6.0, *)
open func endRefreshing()
Run Code Online (Sandbox Code Playgroud)
一个丑陋的解决方案是制作一个我不想要的刷新按钮.
你有什么想法吗?
提前致谢
swift ×6
enums ×2
objective-c ×2
swift3 ×2
app-store ×1
arrays ×1
casting ×1
cycle ×1
deprecated ×1
dictionary ×1
didset ×1
extend ×1
function ×1
homekit ×1
ios ×1
ios11 ×1
node.js ×1
nsnumber ×1
optional ×1
request ×1
retain ×1
screen ×1
swift4 ×1
unwrap ×1
updates ×1
userinfo ×1
xcode ×1
xcode6 ×1