<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hepingdev的专栏]]></title><description><![CDATA[种一棵树，最好的时间是十年前，其次是现在。]]></description><link>https://blog.youkuaiyun.com/hepingdev</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hepingdev]]></copyright><item><title><![CDATA[adb常用命令]]></title><link>https://blog.youkuaiyun.com/hepingdev/article/details/127152932</link><guid>https://blog.youkuaiyun.com/hepingdev/article/details/127152932</guid><author>hepingdev</author><pubDate>Mon, 03 Oct 2022 17:10:58 +0800</pubDate><description><![CDATA[adb即Android Debug Bridge，是Android开发中必不可少的调试工具。]]></description><category></category></item><item><title><![CDATA[iOS app上架app store流程详解]]></title><link>https://blog.youkuaiyun.com/hepingdev/article/details/125522207</link><guid>https://blog.youkuaiyun.com/hepingdev/article/details/125522207</guid><author>hepingdev</author><pubDate>Wed, 29 Jun 2022 15:39:39 +0800</pubDate><description><![CDATA[在有效期内的苹果开发者账号（类型为个人或者公司账号）。还有一种情况，就是你的Apple ID被添加到公司开发者账号团队里面，这样也是可以的，但是需要叫管理员给你开通相应的账号权限，如下截图：

这里可能有些同学会问，苹果开发者账号是什么？如何申请？那么可以看看我的上一篇文章：iOS苹果开发者账号(公司账号)申请流程详解能正常编译打包的iOS工程项目（都不能正常编译谈何出包上架😝）先使用Apple ID登录App Store Connect，登录成功如下截图：（登录的Apple ID是申请苹果开发者账号的A.]]></description><category></category></item><item><title><![CDATA[iOS苹果开发者账号(公司账号)申请流程详解]]></title><link>https://blog.youkuaiyun.com/hepingdev/article/details/125489193</link><guid>https://blog.youkuaiyun.com/hepingdev/article/details/125489193</guid><author>hepingdev</author><pubDate>Mon, 27 Jun 2022 19:19:59 +0800</pubDate><description><![CDATA[近期由于公司项目的需要，全程参与了公司一款iOS原生应用的开发与上线。其中最让我印象深刻的还是申请苹果开发者账号以及app的上架审核。所以，在此记录下操作流程。刚刚涉猎iOS开发的同学，可能存在疑问，苹果开发者账号是个啥？比如发布一个Android应用到应用宝或者华为应用市场，我们首先需要申请软著，然后到相应发布平台申请账号填写app信息进行发布。iOS也一样，但是他没有这么多的发布平台，只有app store，而发布到app store就需要一个苹果开发者账号。 除此之外，比如运行真机调试，app出包签名]]></description><category></category></item><item><title><![CDATA[【Chrome浏览器】点击内容链接总是在当前标签页打开，如何设置用新标签页打开链接？]]></title><link>https://blog.youkuaiyun.com/hepingdev/article/details/125216295</link><guid>https://blog.youkuaiyun.com/hepingdev/article/details/125216295</guid><author>hepingdev</author><pubDate>Fri, 10 Jun 2022 10:24:19 +0800</pubDate><description><![CDATA[Chrome浏览器发现搜索内容后，打开内容链接总是在当前标签页打开，再想看其他的搜索内容就得回退页面，已经打开的内容页面又不能保留，很不方便。针对这种情况我们可以通过Chrome搜索设置来解决，具体步骤如下：打开Google搜索，找到设置选项。
点击设置，选择搜索设置
在搜索设置页面找到结果打开方式，将选项勾选。
最后点击页面最下方的保存按钮，保存即可。 （备注：设置生效的前提是必须登录Google账号）...]]></description><category></category></item><item><title><![CDATA[Kotlin学习历程——函数与Lambda表达式（二）]]></title><link>https://blog.youkuaiyun.com/hepingdev/article/details/124998298</link><guid>https://blog.youkuaiyun.com/hepingdev/article/details/124998298</guid><author>hepingdev</author><pubDate>Fri, 27 May 2022 10:09:40 +0800</pubDate><description><![CDATA[Kotlin语言中文站

高阶函数
以另一个函数作为参数或者返回值的函数叫高阶函数， 这个参数函数我们可以用lambda或者或者函数的引用来表示。 例如集合的filter就是一个高阶函数
fun &lt;T&gt; Iterable&lt;T&gt;.filter(predicate: (T) -&gt; Boolean): List&lt;T&gt; {
    //todo
}

如上：(T) -&gt; Boolean）是函数类型，因此filter是接受一个函数作为它的参数，所以符合高阶函数的要求。.]]></description><category></category></item><item><title><![CDATA[Kotlin学习历程——函数与Lambda表达式（一）]]></title><link>https://blog.youkuaiyun.com/hepingdev/article/details/124892054</link><guid>https://blog.youkuaiyun.com/hepingdev/article/details/124892054</guid><author>hepingdev</author><pubDate>Fri, 20 May 2022 23:13:47 +0800</pubDate><description><![CDATA[Kotlin语言中文站

函数
基础写法
在Kotlin中使用关键字fun声明一个函数：
fun printInfo() {
    println("This is a function.")
}

如果携带参数呢？如下main函数所示：
fun main(args: Array&lt;String&gt;) {
    println("length:${args.size}")
}

如果一个函数没有返回值，如上两个函数，那么它的返回值类型默认是Unit，可省略不写：

我们看看Unit的源码：
p.]]></description><category></category></item><item><title><![CDATA[Kotlin学习历程——对象声明与伴生对象]]></title><link>https://blog.youkuaiyun.com/hepingdev/article/details/124627938</link><guid>https://blog.youkuaiyun.com/hepingdev/article/details/124627938</guid><author>hepingdev</author><pubDate>Sat, 07 May 2022 11:54:31 +0800</pubDate><description><![CDATA[Kotlin语言中文站

对象声明
如下代码写法称为对象声明：
object UserInfoManager {
    //用户类型
    val userType : Int = 0
    
    //获取用户登录信息
    fun getLoginInfo() : String {
        return "用户登录信息"
    }
}

直观一点，我们转成java代码看看：
public final class UserInfoManager {
   private static.]]></description><category></category></item><item><title><![CDATA[Kotlin学习历程——嵌套类与内部类]]></title><link>https://blog.youkuaiyun.com/hepingdev/article/details/124551569</link><guid>https://blog.youkuaiyun.com/hepingdev/article/details/124551569</guid><author>hepingdev</author><pubDate>Tue, 03 May 2022 10:27:28 +0800</pubDate><description><![CDATA[Kotlin语言中文站

嵌套类
与Java类似，在Kotlin中类与类可以互相嵌套，类与接口也可以互相嵌套。
class LoginContract {
    private val TAG = javaClass.simpleName

    class Presenter : BasePresenter&lt;View&gt;() {
        fun login(username: String, pwd: String) {
            //取不到TAG常量
       .]]></description><category></category></item><item><title><![CDATA[Kotlin学习历程——泛型]]></title><link>https://blog.youkuaiyun.com/hepingdev/article/details/124443488</link><guid>https://blog.youkuaiyun.com/hepingdev/article/details/124443488</guid><author>hepingdev</author><pubDate>Wed, 27 Apr 2022 09:43:45 +0800</pubDate><description><![CDATA[Kotlin语言中文站

简单回顾Java泛型
泛型是什么
Java在JDK5中引入了泛型机制。 它的意思可以理解为把具体的类型 参数化，编码时用符号代替类型，实际使用的时候再传入确定的类型，可以用在类、接口或者方法上面。
那么泛型的作用是什么呢？先看一段代码。
public final class Main {
    public static void main(String[] args) {
        /**
         * 案例场景
         *
         * 同事.]]></description><category></category></item><item><title><![CDATA[Kotlin学习历程——扩展]]></title><link>https://blog.youkuaiyun.com/hepingdev/article/details/124269602</link><guid>https://blog.youkuaiyun.com/hepingdev/article/details/124269602</guid><author>hepingdev</author><pubDate>Tue, 19 Apr 2022 11:38:05 +0800</pubDate><description><![CDATA[Kotlin语言中文站

kotlin能够扩展一个类的新功能而无需继承该类，这种方式叫做扩展。例如：你可以为一个你不能修改的，来自第三方库中的类编写一个新的函数，这个新增的函数就像那个原始类本来就有的函数一样。

定义扩展函数
声明一个扩展函数，我们需要用一个接收者类型也就是被扩展的类型来作为他的前缀。
/** 在Extension.kt文件中定义扩展函数 */
fun &lt;T&gt; MutableList&lt;T&gt;.swap(index1: Int, index2: Int) {
    .]]></description><category></category></item><item><title><![CDATA[Kotlin学习历程——抽象类与接口]]></title><link>https://blog.youkuaiyun.com/hepingdev/article/details/124079596</link><guid>https://blog.youkuaiyun.com/hepingdev/article/details/124079596</guid><author>hepingdev</author><pubDate>Sun, 10 Apr 2022 16:43:21 +0800</pubDate><description><![CDATA[Kotlin语言中文站

Kotlin接口可以即包含抽象方法的声明也包含实现。与抽象类不同的是，接口无法保存状态。它可以有属性但必须声明为抽象或提供访问器实现。

定义接口
使用关键字interface来定义一个接口：
interface A {
    //有函数体的函数
    fun foo() {
        println("A##foo")
    }

    //待实现的函数
    fun bar()
}


实现接口
一个类可以实现一个或者多个接口。
class C : A {
 .]]></description><category></category></item><item><title><![CDATA[Kotlin学习历程——继承]]></title><link>https://blog.youkuaiyun.com/hepingdev/article/details/124073753</link><guid>https://blog.youkuaiyun.com/hepingdev/article/details/124073753</guid><author>hepingdev</author><pubDate>Sun, 10 Apr 2022 10:22:07 +0800</pubDate><description><![CDATA[在Kotlin中所有类都有一个共同的父类Any，这对于没有父类声明的类是默认父类。这跟Java是类似的，只不过在Java中默认父类是Object。
这里我们看看Any类源码：
public open class Any {
    /**
     * Indicates whether some other object is "equal to" this one. Implementations must fulfil the following
     * requirements:
     *]]></description><category></category></item><item><title><![CDATA[Kotlin学习历程——类的定义]]></title><link>https://blog.youkuaiyun.com/hepingdev/article/details/124045779</link><guid>https://blog.youkuaiyun.com/hepingdev/article/details/124045779</guid><author>hepingdev</author><pubDate>Fri, 08 Apr 2022 17:16:45 +0800</pubDate><description><![CDATA[定义类
Kotlin中使用关键字class声明一个类，类声明由类名、类头(指定其类型参数、主构造函数等)以及由花括号包围的类体构成。 类头、类体是可选的，如果一个类没有类体，可以省略花括号。
//声明Person类
class Person { /* .... */ }

//没有类体，可以省略花括号
class Person


构造函数
在kotlin中一个类可以有一个或者没有主构造函数以及一个或多个次构造函数。主构造函数是类头的一部分，它跟在类名（与可选的类型参数）后面。
//携带主构造函数的Pers]]></description><category></category></item><item><title><![CDATA[Opt-in requirement marker annotation on override requires the same marker on base declaration.]]></title><link>https://blog.youkuaiyun.com/hepingdev/article/details/123849996</link><guid>https://blog.youkuaiyun.com/hepingdev/article/details/123849996</guid><author>hepingdev</author><pubDate>Wed, 30 Mar 2022 18:04:19 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[【github】Support for password authentication was removed on August 13,2021.]]></title><link>https://blog.youkuaiyun.com/hepingdev/article/details/123684690</link><guid>https://blog.youkuaiyun.com/hepingdev/article/details/123684690</guid><author>hepingdev</author><pubDate>Wed, 23 Mar 2022 14:04:45 +0800</pubDate><description><![CDATA[【github】Support for password authentication was removed on August 13,2021. Please use a personal access token instead.]]></description><category></category></item></channel></rss>