小编mar*_*rux的帖子

删除分组UITableView中的角阴影/偏移

当UITableViewStyleGrouped类型的UITableView的背景视图是iPad上的非默认颜色或图案图像时,圆角有一条丑陋的额外线条,有点像斜角效果或投影:

丑陋的桌子角落

有没有人知道如何摆脱桌子底部的额外线?

uitableview ipad

12
推荐指数
1
解决办法
3099
查看次数

如何将NSCache与通用NSDiscardableContent实现一起使用

我想在NSCache中存储各种对象,并在内存警告命中时自动删除它们.所以我写了下面的NSDiscardableContent实现,用于包装我放入NSCache中的值的实例.

但是当我运行"模拟内存警告"时,我从未看到它们从缓存中删除.我的NSDiscardableContent实现有什么问题吗?或者,当发生内存警告时,是否需要执行其他操作才能使缓存丢弃值?

/** @brief generic implementation of the NSDiscardableContent for storing objects in an NSCache */
@interface GenericDiscardableObject : NSObject<NSDiscardableContent>
@property (nonatomic, retain) id object;
@property (nonatomic) NSUInteger accessCount;
+ (GenericDiscardableObject *)discardableObject:(id)ob;
@end

@implementation GenericDiscardableObject
@synthesize object, accessCount;

+ (GenericDiscardableObject *)discardableObject:(id)ob {
    GenericDiscardableObject *discardable = [[GenericDiscardableObject alloc] init];
    discardable.object = ob;
    discardable.accessCount = 0u;
    return [discardable autorelease];
}

- (void)dealloc {
    self.object = nil;
    [super dealloc];
}

- (BOOL)beginContentAccess {
    if (!self.object)
        return NO;
    self.accessCount = self.accessCount + 1;
    return …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch ios

11
推荐指数
1
解决办法
3198
查看次数

视图中的嵌套 ForEach(和列表)会产生意想不到的结果

在 SwiftUI 视图中的另一个 ForEach 中执行 ForEach 会产生意想不到的结果 - 几乎就像他们踩到彼此的计数器一样。不清楚发生了什么。我需要显示多分支数组并尝试了许多变体,但一直遇到同样的问题

我有几个项目出现了这个问题。尝试使用范围 (0..

这只是一个测试版问题还是我遗漏了什么?我已经包含了一个演示问题的示例项目。

使用 XCode 11 Beta (11M392r)

谢谢!

import SwiftUI

struct ContentView: View {

    let topTier:[String] = ["Apple", "Banana", "Cherry"]
    let nextTier:[String] = ["Abalone", "Brie", "Cheddar"]


    var body: some View {
        List {

            ForEach (topTier.indices, id: \.self) { a in

                Text(self.topTier[a])

                ForEach (self.nextTier.indices, id: \.self) { b in

                    Text(self.nextTier[b]).padding(.leading, 20)

                }

            }
        }
    }
}

Run Code Online (Sandbox Code Playgroud)

在最合适的 ForEach 上抛出“对成员‘索引’的不明确引用”。

如果对内部 ForEach 进行了注释,则可以显示水果 如果对外部 ForEach 进行了注释,则可以显示奶酪

我想让它显示: 苹果鲍鱼布里切达干酪 香蕉鲍鱼布里切达干酪 樱桃鲍鱼布里切达干酪

swiftui swiftui-list

10
推荐指数
1
解决办法
2836
查看次数

如何防止全局覆盖的"新"运算符从外部库链接

在我们的iPhone XCode 3.2.1项目中,我们链接了2个外部静态C++库libBlue.a和libGreen.a.libBlue.a全局覆盖了" new "运算符,用于自己的内存管理.然而,当我们构建我们的项目时,libGreen.a最终会使用libBlue的new运算符,这会导致崩溃(可能是因为libBlue.a正在假设所分配的结构类型).libBlue.a和libGreen.a都是由第三方提供的,因此我们无法更改任何源代码或构建选项.

当我们从项目中删除libBlue.a时,libGreen.a没有任何问题.然而,没有任何数量的库的链接顺序混洗似乎解决了问题,也没有任何实验与各种链接标志.有没有办法告诉XCode告诉链接器"让libGreen使用new运算符使用标准的C++ new运算符而不是libBlue重新定义的运算符"?

c++ iphone xcode linker new-operator

8
推荐指数
1
解决办法
1588
查看次数

"Self"仅在协议中可用或作为类方法的结果

更新:Swift 3允许Self从其他类型使用,这要归功于SE-0068 - 将Swift Self扩展为类成员和值类型.

您可以从类函数返回"Self":

extension NSObject {
    class func makeOne() -> Self {
        return self()
    }
}
Run Code Online (Sandbox Code Playgroud)

所以你可以这样做:

let set : NSCountedSet = NSCountedSet.makeOne()
Run Code Online (Sandbox Code Playgroud)

但是,以下两个不编译:

extension NSObject {
    class func makeTwo() -> (Self, Self) {
        return (self(), self())
    }

    class func makeMany() -> [Self] {
        return [self(), self(), self(), self(), self()]
    }
}
Run Code Online (Sandbox Code Playgroud)

错误是:

<REPL>:11:34: error: 'Self' is only available in a protocol or as the result of a class method; did you …
Run Code Online (Sandbox Code Playgroud)

swift

8
推荐指数
1
解决办法
2134
查看次数

将@State转换为发布者

我想@State在UI和计算值中都使用变量。

例如,假设我有一个TextField约束@State var userInputURL: String = "https://"。我将如何处理并将其userInputURL连接到发布商,以便将map其集成到URL

伪代码:

$userInputURL.publisher()
      .compactMap({ URL(string: $0) })
      .flatMap({ URLSession(configuration: .ephemeral).dataTaskPublisher(for: $0).assertNoFailure() })
      .eraseToAnyPublisher()
Run Code Online (Sandbox Code Playgroud)

swift swiftui combine

8
推荐指数
1
解决办法
337
查看次数

SwiftUI列表中的可编辑TextField

在beta6 SwiftUImacOS(不是 iOS)应用中,我需要List具有可编辑的文本字段,但是TextField列表中的s是不可编辑的。它工作正常,如果我换出ListForm(或仅仅VStack),但我需要它工作List。有什么技巧告诉列表使字段可编辑吗?

import SwiftUI

struct ContentView: View {
    @State var stringField: String = ""

    var body: some View {
        List { // works if this is VStack or Form
            Section(header: Text("Form Header"), footer: Text("Form Footer")) {
                TextField("Line 1", text: $stringField).environment(\.isEnabled, true)
                TextField("Line 2", text: $stringField)
                TextField("Line 3", text: $stringField)
                TextField("Line 4", text: $stringField)
                TextField("Line 5", text: $stringField)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

appkit swiftui

7
推荐指数
1
解决办法
727
查看次数

如何对异构数字的动态数组进行排序?

我想排序一个可以包含不同数字类型(double,float等)的数组.这段代码引发System.ArgumentException("Value不是System.Single")错误:

new dynamic[] { 5L, 4D, 3F, 2U, 1M, 0UL }.ToList().Sort();
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用LINQ来做到这一点:

new dynamic[] { 5L, 4D, 3F, 2U, 1M, 0UL }.ToList().OrderBy(x => (decimal)x).ToArray();
Run Code Online (Sandbox Code Playgroud)

但有没有更快的方法不涉及通过任何必须铸造每个元素?

附录:我还希望能够处理列表中的空值,因此即使是LINQ查询的强制转换也无济于事.

c#

6
推荐指数
1
解决办法
825
查看次数

如何使用JSON.NET反序列化并保留父对象

我有一些像JSON:

{
  "companyName": "Software Inc.",
  "employees": [
    {
      "employeeName": "Sally"
    },
    {
      "employeeName": "Jimmy"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我想将其反序列化为:

public class Company
{
  public string companyName { get; set; }
  public IList<Employee> employees { get; set; }
}

public class Employee
{
  public string employeeName { get; set; }
  public Company employer { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能让JSON.NET设置"雇主"参考?我尝试使用a CustomCreationConverter,但该public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)方法不包含对当前父对象的任何引用.

c# json.net

6
推荐指数
1
解决办法
950
查看次数

要求关联类型在@convention(c)块中可表示

我想有一种通用的方式来做类似Swift 3:

public protocol Callable {
    associatedtype In : CVarArg
    associatedtype Out : CVarArg
}

public struct IntCallable : Callable {
    public typealias In = Int
    public typealias Out = Double

    public typealias FunctionalBlock = @convention(c) (In) -> Out

    public func call(_ block: FunctionalBlock) { /* do stuff */ }
}
Run Code Online (Sandbox Code Playgroud)

所以我希望它看起来像这样:

public protocol Callable {
    associatedtype In : CVarArg
    associatedtype Out : CVarArg
    typealias FunctionalBlock = @convention(c) (In) -> Out
}

public struct IntCallable : Callable {
    public typealias …
Run Code Online (Sandbox Code Playgroud)

swift

6
推荐指数
1
解决办法
155
查看次数