Notice: wp_deregister_script的调用方法不正确。脚本和样式应在wp_enqueue_scriptsadmin_enqueue_scriptslogin_enqueue_scripts钩子之后再加入加载队列(enqueue)或注册(register)。 This notice was triggered by the l10n handle. 请查阅调试WordPress来获取更多信息。 (这个消息是在3.3.0版本添加的。) in /data/wwwroot/www.crifan.com/wp-includes/functions.php on line 5225

Notice: Undefined variable: control_ops in /data/wwwroot/www.crifan.com/wp-content/themes/daqianduan-d8-jquiss/widgets/wid-banner.php on line 11

Deprecated: 在d_banner中为WP_Widget调用的构造函数已自版本4.3.0起废弃!请改用__construct()。 in /data/wwwroot/www.crifan.com/wp-includes/functions.php on line 4866

Notice: Undefined variable: control_ops in /data/wwwroot/www.crifan.com/wp-content/themes/daqianduan-d8-jquiss/widgets/wid-slidebanner.php on line 11

Deprecated: 在d_slidebanner中为WP_Widget调用的构造函数已自版本4.3.0起废弃!请改用__construct()。 in /data/wwwroot/www.crifan.com/wp-includes/functions.php on line 4866

Notice: Undefined variable: control_ops in /data/wwwroot/www.crifan.com/wp-content/themes/daqianduan-d8-jquiss/widgets/wid-readers.php on line 11

Deprecated: 在d_reader中为WP_Widget调用的构造函数已自版本4.3.0起废弃!请改用__construct()。 in /data/wwwroot/www.crifan.com/wp-includes/functions.php on line 4866

Notice: Undefined variable: control_ops in /data/wwwroot/www.crifan.com/wp-content/themes/daqianduan-d8-jquiss/widgets/wid-postlist.php on line 11

Deprecated: 在d_postlist中为WP_Widget调用的构造函数已自版本4.3.0起废弃!请改用__construct()。 in /data/wwwroot/www.crifan.com/wp-includes/functions.php on line 4866

Notice: Undefined variable: control_ops in /data/wwwroot/www.crifan.com/wp-content/themes/daqianduan-d8-jquiss/widgets/wid-comment.php on line 11

Deprecated: 在d_comment中为WP_Widget调用的构造函数已自版本4.3.0起废弃!请改用__construct()。 in /data/wwwroot/www.crifan.com/wp-includes/functions.php on line 4866

Notice: Undefined variable: control_ops in /data/wwwroot/www.crifan.com/wp-content/themes/daqianduan-d8-jquiss/widgets/wid-tags.php on line 11

Deprecated: 在d_tag中为WP_Widget调用的构造函数已自版本4.3.0起废弃!请改用__construct()。 in /data/wwwroot/www.crifan.com/wp-includes/functions.php on line 4866

Notice: Undefined variable: control_ops in /data/wwwroot/www.crifan.com/wp-content/themes/daqianduan-d8-jquiss/widgets/wid-textbanner.php on line 11

Deprecated: 在d_textbanner中为WP_Widget调用的构造函数已自版本4.3.0起废弃!请改用__construct()。 in /data/wwwroot/www.crifan.com/wp-includes/functions.php on line 4866
【整理】swift开发心得+跳过的坑 – 在路上
最新消息:20190717 VPS服务器:Vultr新加坡,WordPress主题:大前端D8,统一介绍入口:关于

【整理】swift开发心得+跳过的坑

Swift crifan 1134浏览 0评论

跳过的坑

layoutSubviews中尽量不要添加subview

否则:
每次页面重新布局显示
(不如进入子页面后再返回当前页面,此时也会调用layoutSubviews的)
此时导致的是:
add的subview,会被多次添加
比如:
我之前在一个继承了UITableViewCell的ConversationTableViewCell中:
class ConversationTableViewCell: UITableViewCell {
    var atMeStr:String = ""

    override func layoutSubviews() {
        super.layoutSubviews()
        self.detailTextLabel?.addSubview(atMeAndDetailLabel)
    }
}

第一次显示,是正常的:

但是多次进入子页面后再返回
-》layoutSubviews被调用多次
-》addSubview被调用多次
-》多次add了atMeAndDetailLabel
-》导致看起来文字就重复,出现阴影了:
first show test ok again bold
自己此时的解决办法是:
加了对应的判断,只调用一次:
        if !atMeStr.isEmpty {
            //check for if already added, then not add
            //-> prevent duplicated add atMeAndDetailLabel
            let detailTextSubview = self.detailTextLabel?.subviews
            if detailTextSubview?.count == 0
            {
                self.detailTextLabel?.addSubview(atMeAndDetailLabel)
            }
        }
心得是:
layoutSubviews中就应该只是调节布局
-》而不应该添加子的视图
-》如果非得添加子视图
-》那么记得要判断条件,保证只添加一次
-》否则每次页面重新布局,都会导致add subview
-》就会导致页面显示出问题了

心得

类型Types:

Swift中有个基本的概念,叫做:Types类型,和Class类概念上有点类似。
Swift类型:
  • 命名类型:基本结构,都可以有自己的成员变量和方法
    • 类 (class)
    • 结构体 (struct)
      • Int
      • String
      • Array
      • Dictionay
    • 枚举 (enum)
    • 接口 (protocol)
  • 复合类型:
    • 函数 (func)
    • 多元组 (tuple)
Cocoa 框架中的类,基本都被映射为了 Swift 的 class

转载请注明:在路上 » 【整理】swift开发心得+跳过的坑


Warning: Use of undefined constant PRC - assumed 'PRC' (this will throw an Error in a future version of PHP) in /data/wwwroot/www.crifan.com/wp-content/themes/daqianduan-d8-jquiss/comments.php on line 17

Deprecated: 自4.5.0版本起,已不建议使用get_currentuserinfo,请换用wp_get_current_user()。 in /data/wwwroot/www.crifan.com/wp-includes/functions.php on line 4773
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
50 queries in 0.115 seconds, using 18.61MB memory